数组Arrays
本文内容
数组是一种数据结构,其中包含许多通过计算索引访问的变量。数组中的变量(亦称为数组的元素)均为同一种类型,我们将这种类型称为数组的元素类型。
数组类型是引用类型,声明数组变量只是为引用数组实例预留空间。实际的数组实例是在运行时使用 new 运算符动态创建而成。new 运算指定了新数组实例的长度,然后在此实例的生存期内固定使用这个长度。数组元素的索引介于 0
到 Length - 1
之间。new
运算符自动将数组元素初始化为其默认值(例如,所有数值类型的默认值为 0,所有引用类型的默认值为 null
)。
以下示例创建 int
元素数组,初始化此数组,然后打印输出此数组的内容。
using System;
class ArrayExample
{
static void Main()
{
int[] a = new int[10];
for (int i = 0; i < a.Length; i++)
{
a[i] = i * i;
}
for (int i = 0; i < a.Length; i++)
{
Console.WriteLine($"a[{i}] = {a[i]}");
}
}
}
上面的示例创建一维数组,并对其执行运算。C# 还支持多维数组。数组类型的维数(亦称为数组类型的秩)是 1 与数组类型方括号内的逗号数量相加的结果。以下示例分别分配一维、二维、三维数组。
int[] a1 = new int[10];
int[,] a2 = new int[10, 5];
int[,,] a3 = new int[10, 5, 2];
a1
数组包含 10 个元素,a2
数组包含 50 个元素 (10 × 5),a3
数组包含 100 个元素 (10 × 5 × 2)。数组的元素类型可以是任意类型(包括数组类型)。包含数组类型元素的数组有时称为交错数组,因为元素数组的长度不必全都一样。以下示例分配由 int
数组构成的数组:
int[][] a = new int[3][];
a[0] = new int[10];
a[1] = new int[5];
a[2] = new int[20];
第一行创建包含三个元素的数组,每个元素都是 int[]
类型,并且初始值均为 null
。后面的代码行将这三个元素初始化为引用长度不同的各个数组实例。
通过 new 运算符,可以使用数组初始值设定项(在分隔符 {
和 }
内编写的表达式列表)指定数组元素的初始值。以下示例分配 int[]
,并将其初始化为包含三个元素。
int[] a = new int[] {1, 2, 3};
请注意,可从 { 和 } 内的表达式数量推断出数组的长度。局部变量和字段声明可以进一步缩短,这样就不用重新声明数组类型了。
int[] a = {1, 2, 3};
以上两个示例等同于以下示例:
int[] t = new int[3];
t[0] = 1;
t[1] = 2;
t[2] = 3;
int[] a = t;