一、数组分类

  数组可以简单分为3类:

  • 1维数组
  • 2维数组
  • 交错数组

二、数组初始化

  1.一维数组

  int [] A = { 1,2,3,4 } 直接赋值

  或者

  int [] A = new int [4]{ 1,2,3,4 } new一下,并声明大小

  2.二维数组

  每行个数必须相同,适合规整的数据存储;

  int[,] AA={ {1,2 }, { 4,5 }, {6,7 } }; 直接赋值

  int[,] AA=new int[ , ] { {1,2 }, { 4,5 }, {6,7 } };new一下

  int[,] AA=new int[3,2] { {1,2 }, { 4,5 }, {6,7 } };new 并同时声明大小

  注意:没有声明子项长度时,数组每个子项的大小,必须和第一个子项相同。

  3.交错数组

  每项的个数不一定相同,自由度较高;

    int[][] AAA = { new int[]{1}, new int[]{1,2}, new int[]{3,2} };

  注意:交错数组和二维数组的区别是,交错数组并不限制子项的大小一致。


三、数组常用函数

  int A[]的各种函数其实是由Array类来提供的,下面是Array的属性和方法:

函数名

方法

示例

Clear

清空

Clear(Array array, int index, int length);

根据元素的类型,设置数组中某个范围的元素为零、为 false 或者为 null。

Array.Clear(A,0,3);

Copy

复制

void Copy(Array sourceArray, Array destinationArray, int length);

从一个数组A复制某范围内地 数据到另一个数组B

Array.Copy(A, B, 3);

GetLength

获得长度

int GetLength(int dimension);

获得长度

A.GetLength();

GetValue

获得某下标的值

Object GetValue(Int32)

获取一维数组中指定位置的值。索引由一个 32 位整数指定。

Object obj = A.GetValue(1)

等价于 A[1]

SetValue

设置某下标的值

void SetValue(object value, int index);

当前表示设置1维数组A[index]=value;

void SetValue(object value, long index1, long index2);

当前表示设置2维数组A[index1][index2]=value;

A.SetValue(10,1);

等价于 A[1]=10

IndexOf

查找

int IndexOf(Array array, object value);

第一个出现value数值的位置

int LastIndexOf(Array array, object value, int startIndex);

最好出现value数值的位置

Sort

排序

Sort(Array array)

将数组按照某个规则排序

下面详解

Reverse

翻转

void Reverse(Array array);

将数组翻转

Resize

重设大小

void Resize<T>(ref T[] array, int newSize);

重新设置数组大小

更多函数,请详见:class Array类


四、重点函数详解

  (1)Sort排序:

void Sort(Array array);  默认排序

void Sort(Array array, int index, int length);   从index开始,截取length长度的数据排序

void Sort(Array array, IComparer comparer);  常规的int/string类型数据,自定义排序

void Sort<T>(T[] array, Comparison<T> comparison);  结构体、类等复杂的数据类型 排序,在comparison自定义排序规则

void Sort(Array keys, Array items);  两组数组一起排序,结果按照数组keys的默认排序来排。

void Sort(Array keys, Array items, IComparer comparer);  两组数组一起排序,结果按照数组keys的自定义排序来排。

(2)Resize重新设置大小:

void Resize<T>(ref T[] array, int newSize);

  此方法分配指定大小的新数组,将元素从旧的数组复制到新,然后使用新替换旧的数组。array必须是一维数组。

    • 如果array是null,此方法具有指定大小创建一个新数组。
    • 如果newSize大于Length的旧的数组中,分配一个新数组,且所有元素从旧的数组都复制到新。 
    • 如果newSize是小于Length的旧的数组中,分配一个新数组和元素从旧数组复制到新直到填充新的; 旧的数组中的元素的其余部分将被忽略。 
    • 如果newSize等同于Length的旧的数组,此方法不执行任何操作。

 

C# 数组之int[]的更多相关文章

  1. C#List转字符串,字符串转List,字符数组转Int数组

    List转字符串 [C#] 纯文本查看 复制代码 ? 01 02 List<string> List = new List<string>(); string strArray ...

  2. java 字节数组转int

    4字节数组转int类型 小端模式 /** * 数组转int类型 * * @param src * @return */ public static int bytesToInt(byte[] src) ...

  3. 【转】java中byte数组与int类型的转换(两种方式)----不错

    原文网址:http://blog.csdn.net/piaojun_pj/article/details/5903009 java中byte数组与int类型的转换,在网络编程中这个算法是最基本的算法, ...

  4. C# string数组转int数组(转载)

    C# string数组转int数组   用法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 //字符串数组(源数组) string[] sNums = new[] {"1 ...

  5. C# string数组转int数组

    用法 //字符串数组(源数组) string[] sNums = new[] {"1", "2"}; //整型数组(目标数组) int[] iNums; //转 ...

  6. byte数组和int之间相互转化的方法

    Java中byte数组和int类型的转换,在网络编程中这个算法是最基本的算法,我们都知道,在socket传输中,发送者接收的数据都是byte数组,但是int类型是4个byte组成的,如何把一个整形in ...

  7. 数组转集合、集合转数组、字符串数组与int型、long型数组等的转换

    在项目中经常会遇到数组转集合.集合转数组.数组之间类型转换等操作 1.数组转集合 为了实现把一个数组转换成一个ArrayList,很多Java程序员会使用如下的代码: String str[] = { ...

  8. 【转】C# string数组转int数组

    //字符串数组(源数组) string[] sNums = new[] {"1", "2"}; //整型数组(目标数组) int[] iNums; //转换方法 ...

  9. Java 中 byte、byte 数组和 int、long 之间的转换

    Java 中 byte 和 int 之间的转换源码: //byte 与 int 的相互转换 public static byte intToByte(int x) { return (byte) x; ...

  10. string 数组转 int 数组

    用法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 //字符串数组(源数组) string[] sNums = new[] {"1", "2" ...

随机推荐

  1. JS遍历ChexkBoxList

    var cboxs = $("#cblAuth input[type=checkbox]"); ; ; i < cboxs.length; i++) { if (cboxs[ ...

  2. Python: scikit-image 图像的基本操作

    这个用例说明Python 的图像基本运算 import numpy as np from skimage import data import matplotlib.pyplot as plt cam ...

  3. ambari 维护模式及reset API 操作

    Ambari 的维护模式(Maintenance Mode)介绍 Ambari 提供的 Maintenance Mode,是为了让用户在调试或者维护 Service 的时候,抑制不必要的告警(Aler ...

  4. QT(2)项目文件介绍

    一.项目创建 二.文件说明 三.QT模块

  5. POJ3264(线段树入门题)

    Balanced LineupCrawling in process... Crawling failed Time Limit:5000MS     Memory Limit:65536KB     ...

  6. 数论 最简分数 Farey序列求最简分数+POJ3374

    法雷数列 定义和定理 定义一: 最简分数(也称既约分数或不可约分数).若p,q的最大公约数是1,我们称分数p/q是最简分数. 定义二: 真分数,若p,q是正整数,0<p/q<1, 我们说p ...

  7. Linux 包管理基础:apt、yum、dnf 和 dpkg

    https://linux.cn/article-8782-1.html 1. apt-get 安装( 在线) 会帮我把所有的依赖包都一起安装 apt-get install xxx 安装xxx .如 ...

  8. DL杂谈

    好久不写了,几点这次项目经验吧,本次训练位多任务训练,主要目的训练人脸角度,具体公司项目不细谈. 讲一下主要碰到的坑: 1 最主要问题,网络结构不对称,导致主任务与辅助任务之间的梯度关系不平衡从而导致 ...

  9. pow()函数的精度问题

    妈蛋这个坑了我大半个小时都想不出个原因..后来看到pow的定义才想起,数据类型很重要啊.. 1.底数用常量,指数用整型 #include <stdio.h> #include <ma ...

  10. Elasticsearch5.X Mapping详解

    0.引言 在关系型数据库如Mysql中,设计库表需要注意的是: 1)需要几个表: 2)每个表有哪些字段: 3)表的主键及外键的设定——便于有效关联. 表的设计遵守范式约束,考虑表的可扩展性,避免开发后 ...