数组Arrays

本文内容

数组是一种数据结构,其中包含许多通过计算索引访问的变量。数组中的变量(亦称为数组的元素)均为同一种类型,我们将这种类型称为数组的元素类型

数组类型是引用类型,声明数组变量只是为引用数组实例预留空间。实际的数组实例是在运行时使用 new 运算符动态创建而成。new 运算指定了新数组实例的长度,然后在此实例的生存期内固定使用这个长度。数组元素的索引介于 0Length - 1 之间。new 运算符自动将数组元素初始化为其默认值(例如,所有数值类型的默认值为 0,所有引用类型的默认值为 null)。

以下示例创建 int 元素数组,初始化此数组,然后打印输出此数组的内容。

  1. using System;
  2. class ArrayExample
  3. {
  4. static void Main()
  5. {
  6. int[] a = new int[10];
  7. for (int i = 0; i < a.Length; i++)
  8. {
  9. a[i] = i * i;
  10. }
  11. for (int i = 0; i < a.Length; i++)
  12. {
  13. Console.WriteLine($"a[{i}] = {a[i]}");
  14. }
  15. }
  16. }

上面的示例创建一维数组,并对其执行运算。C# 还支持多维数组数组类型的维数(亦称为数组类型的)是 1 与数组类型方括号内的逗号数量相加的结果。以下示例分别分配一维、二维、三维数组。

  1. int[] a1 = new int[10];
  2. int[,] a2 = new int[10, 5];
  3. int[,,] a3 = new int[10, 5, 2];

a1 数组包含 10 个元素,a2 数组包含 50 个元素 (10 × 5),a3 数组包含 100 个元素 (10 × 5 × 2)。数组的元素类型可以是任意类型(包括数组类型)。包含数组类型元素的数组有时称为交错数组,因为元素数组的长度不必全都一样。以下示例分配由 int 数组构成的数组:

  1. int[][] a = new int[3][];
  2. a[0] = new int[10];
  3. a[1] = new int[5];
  4. a[2] = new int[20];

第一行创建包含三个元素的数组,每个元素都是 int[] 类型,并且初始值均为 null后面的代码行将这三个元素初始化为引用长度不同的各个数组实例。

通过 new 运算符,可以使用数组初始值设定项(在分隔符 {} 内编写的表达式列表)指定数组元素的初始值。以下示例分配 int[],并将其初始化为包含三个元素。

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

请注意,可从 { 和 } 内的表达式数量推断出数组的长度。局部变量和字段声明可以进一步缩短,这样就不用重新声明数组类型了。

  1. int[] a = {1, 2, 3};

以上两个示例等同于以下示例:

  1. int[] t = new int[3];
  2. t[0] = 1;
  3. t[1] = 2;
  4. t[2] = 3;
  5. int[] a = t;