C#语言中数组是一组同类型的数据元素,每个元素可以通过下标的方式访问,数组是固定长度的,下标从0
开始。C#中支持一维数组和高维数组(矩阵数组),除此之外C#还支持交错数组,允许作为元素的数组的维度和大小不同。
下面例子代码中我们声明了一个名为arr
的整形数组,并使用new
关键字实例化了一个长度为4
的整形数组对象,随后使用数组的下标进行了赋值和取值。
// 声明和实例化数组
int[] arr = new int[4];
// 通过下标赋值
arr[0] = 0;
// 通过下标取值
int i = arr[0];
数组创建时,如果没有使用显式的赋值,其每个元素会被初始化为默认值。
此外,我们还要知道,C#中所有数组都是System.Array
的派生类,是引用类型的,但元素既可以是值类型也可以是引用类型。
C#中的矩阵数组是一种高维数组,但每个维度元素长度需要相同,矩阵数组使用方括号和逗号[,,]
的形式表达数组的维度。下面例子代码中,我们实例化了一个二维数组,并进行了赋值和取值。
int[,] arr = new int[3, 3];
arr[0, 0] = 0;
int i = arr[0, 0];
交错数组允许作为元素的数组的维度和大小不同,下面例子代码初始化了一个交错数组。
int[][] arr = new int[3][];
arr[0] = new int[1];
arr[1] = new int[2];
arr[2] = new int[3];
上面我们实例化数组时只是指定了数组的长度,实际上我们可以直接在初始化时进行显式的赋值。下面代码演示了一维数组和矩阵数组的显式初始化。
int[] arr = new int[] { 1, 2, 3, 4 };
int[,] arr = new int[,] { { 1, 2, 3, 4 }, { 5, 6, 7, 8 } };
使用显式初始化时,我们可以省略数组的长度。
C#中我们常用for
和foreach
语句对数组进行迭代,下面例子对一维数组进行了迭代。
// 数组声明和初始化
int[] arr = new int[] { 1, 2, 3, 4, 5 };
// 使用for循环迭代
for (int i = 0; i < arr.Length; i++)
{
Console.WriteLine(arr[i]);
}
// 使用foreach循环迭代
foreach (int p in arr)
{
Console.WriteLine(p);
}
对于矩阵数组和交错数组,其实和大多数类C语言的写法都是一样的,这里就不多介绍了。
C#中的数组对象对一些常用的属性和方法进行了实现,下面列出了其中比较常用的属性和方法,完整的文档我们查阅MSDN中的System.Array
类。
成员 | 类型 | 生存期 | 说明 |
---|---|---|---|
Rank | 属性 | 实例 | 获取数组维度 |
Length | 属性 | 实例 | 获取数组长度 |
GetLength | 方法 | 实例 | 获取指定维度的长度 |
Clear | 方法 | 静态 | 清空一定范围内元素为初始值 |
Sort | 方法 | 静态 | 数组排序 |
BinarySearch | 方法 | 静态 | 二分查找搜索数组中指定内容 |
Clone | 方法 | 实例 | 数组浅拷贝 |
IndexOf | 方法 | 静态 | 返回某个元素的索引 |
Reverse | 方法 | 静态 | 反转数组 |
GetUpperBound | 方法 | 实例 | 获取数组指定维度的上限 |