数组
C#不支持动态数组,如果想实现类似JS数组的效果,可以参考ArralList或者List。
数组
矩形数组:
某个维度的所有子数组具有相同长度的多维数组。
不管有多少维度,总是使用一组方括号。
1 | mayArray[4,6,1];//一组方括号 |
交错数组:
每一个子数组都是独立数组的多维数组。
可以有不同长度的子数组。
为数组的每一个维度使用一对方括号。
1 | jagArray[2][7][4]; |
声明一维数组与矩形数组
一维数组:
1 | int[] arr; |
矩形数组:
可以使用多个秩说明符。
不能在数组类型区域中放数组维度长度。秩是数组类型的一部分,而维度长度不是类型的一部分。
数组声明后维度数就是固定的了,然而数组长度直到数组实例化时才会确定。
1 | int[,,] arr1; |
实例化一维数组与矩形数组
一维数组:
1 | int[] arr1 = new int[4]; |
矩形数组:
1 | int[,,] arr4 = new int[3,6,2]; |
当数组被创建之后,每一个元素被自动初始化为类型的默认值
声明交错数组
方括号的数量决定了数组的秩。
1 | int[][] SomeArr; |
实例化交错数组
不能在声明语句中初始化顶层数组之外的数组。
1 | int[][] jagArr = new int[3][]; |
初始化交错数组
交错数组的初始化不能在一个步骤中完成,每一个数组必须独立创建。
1 | int[][] arr = new int[3][]; |
交错数组的子数组
交错数组的子数组本事就是数组,因此子数组可能有矩形数组。
1 | int[][,]Arr; |
System.Array的GetLength(int n)方法可以获取数组中指定维度的长度。
foreach语句
foreach语句会遍历实现IEnumerable接口的迭代对象,foreach遍历是只读的,不能在foreach中对迭代对象做修改。
想要遍历交错数组需要对交错数组中每一个维度使用独立的foreach语句。foreach语句必须嵌套以确保每一个嵌套数组都被正确处理。
数组协变
在某些情况下,即使某个对象不是数组的基类型,也可以把它赋值给数组元素这种属性称为协变,以下情况可以使用数组协变:
数组是引用类型数组。
在赋值的对象类型和数组基类型之间有隐式转换或显式转换。
1 | class Program { |
有用的数组成员
Rank 属性 实例 获取数组维度数
Length 属性 实例 获取所有维度的元素总数
GetLength 方法 实例 返回数组的指定维度的长度
Clear 方法 静态 将某一范围内的元素设置为0或null
Sort 方法 静态 在一维数组中对元素进行排序
BinarySerach 方法 静态 使用二分查找搜索一维数组中的值
Clone 方法 实例 进行数组的浅复制——对于值类型数组复制元素对于引用类型则产生指向相同元素的两个数组
IndexOf 方法 静态 返回一维数组中遇到的第一个值
Reverse 方法 静态 反转一维数组中某一范围内的元素
GetUpperBound 方法 实例 获取指定维度的上限
Clone方法
对于值类型克隆产生两个数组
对于引用类型产生指向相同对象的两个数组
克隆方法返回object类型的引用,它必须被强制转换成数组类型!
1 | class Program { |