ps:建议多使用一维数组和交错数组(性能更高)
数组实际上是由一个变量名称表示的一组同类型的数据元素。每个元素通过变量名称和一个或多个方括号中的索引来访问
数组的访问方式:
数组名 索引
MyArray[index]
C#提供了两种类型的数组
矩阵数组和交错数组的特征
矩阵数组
某个维度的所有子数组有相同长度的多维数组
不管有多少维度,总是使用一组方括号
ps:int x = myArray[4, 6, 1]
交错数组
每一个子数组都是独立数组的多维数组
可以有不同长度的子数组
为数组的每一个维度使用一对方括号
ps:Array[2][7][4]
数组实例是从System.Array继承的对象。由于数组是从BCL基类继承,它们也继承了很多有用的方法
尽管数组总是引用类型,但是数组的元素可以是值类型也可以是引用类型
一维数组的声名:
秩说明符:, 英文逗号
数据类型[ 秩说明符 ] 数组名;
一维数组声明并实例化的方式:
数据类型 [] 数组名 = new 数据类型[ 数组长度 ];
数据类型 [] 数组名 = new 数据类型[]{ 数据1, 数据2, ....};
数据类型 [] 数组名 = { 数据1, 数据2, ....};
数据类型 [] 数组名 = new 数据类型[ 数组长度 ]{ 数据1, 数据2, ....};
矩阵数组的声明:
数据类型 [ , , ] 数组名; //三维数组
数据类型 [ , ] 数组名; //二维数组
矩形数组的声明应注意以下几点:
矩阵数组的实例化:
ps:int [ , , ] arr = new int [3,6,2];
矩阵数组实例化和为数据初始化方式类似
交错数组是数组的数组。与矩阵数组不同,交错数组的子数组的元素个数可以不同
// arr是3个int数组的数组(读法)
int [][] arr = new int [3][]; //声明并创建顶层数组
... //声明并创建子数组
声明方式:
交错数组的声明语法要求每一个维度都有一对独立的方括号。数组变量声明中的方括号数决定了数组的秩
int[][] SomeArr;
//秩等于2
int[][][] OtherArr;
/秩等于3
实例化交错数组
int [][] Arr = new int[3][]; //实例化顶层数组
Arr[0] = new int []{1, 2, 3}; //实例化子数组
Arr[1] = new int []{12, 22, 32, 42}; //实例化子数组
Arr[2] = new int []{10, 20, 30, 40, 50}; //实例化子数组
成员 | 类型 | 生存期 | 意义 |
---|---|---|---|
Rank | 属性 | 实例 | 获取数组的维度数 |
Length | 属性 | 实例 | 获取数组中所有维度的元素总和 |
GetLength | 方法 | 实例 | 返回数组的指定维度的长度 |
Clear | 方法 | 静态 | 将某一范围内的元素设置为0或nu1l |
Sort | 方法 | 静态 | 在一维数组中对元素进行排序 |
BinarySearch | 方法 | 静态 | 使用二进制搜索,搜索一维数组中的值 |
Clone | 方法 | 实例 | 进行数组的浅复制——对于值类型数组和引用类型数组,都只复制元素 |
Indexof | 方法 | 静态 | 返回一维数组中遇到的第一个值 |
Reverse | 方法 | 静态 | 反转一维数组中的某一范围内的元素 |
GetUpperBound | 方法 | 实例 | 获取指定维度的上限 |
foreach语法:
froeach( Type Indentifiter in ArrayNmae) { Satement }