目录
数组实际上是由一个变量名称表示的一组同类型的数据元素,是一组相同类型的集合。 我们首先了解一下数组中的一些重要定义开始:
- 秩/ 维度 : 数组可以有任何为正数的维度数, 数组的维度称作秩。 意思就是说,该数组是几维数组 ,[ ] 表示一维数组, [ , ] 表示二维数组。
- 维度长度: 数组的每一个维度的长度, 就是这个方向的位置的元素个数.
- 数组长度: 数组的所有维度中的元素的总和称为数组的长度。
注意点:
- 数组一旦创建并且初始化,大小就固定了,C# 不支持动态数组。
- 数组的索引从0开始。那么数组中的元素个数的索引范围是 从0 到 n-1
数组的类型
C#中有两种类型的数组,分别为一维数组和多维数组,多维数组中还分矩形数组和 交错数组(也称为 锯齿数组)。
一维数组: 指的是一组地址连续的相同类型的单行元素序列。
矩形数组:有多个秩,其中每一行的元素个数都相同。 不管多少维度,总是使用一个方括号,例如:
doule[,] myDouble = new double[3,4]; // 二维数组
交错数组(也称为 锯齿数组):有多个秩,其中每一行的元素个数不一定都相同。然后呢,为数组的每一个维度使用一对方括号:
int[][] myInt = new int[3][] { new int[] { 1, 2, 3 }, new int[] { 1 }, new int[] { 1, 2 } }; //正确 该数组就是: 1 2 3 // 第一行 1 // 第二行 1 2
数组的 Rank、Length 操作
数组的实例是从 System.Array 继承的对象。那么数组是引用类型, 数组的引用在栈上或者堆上, 数组的元素总是在堆上。如图:
数组虽然是引用类型, 但是数组的元素 可以是值类型, 也可以是引用类型(比如类)。
- 如果存储的元素都是值类型, 数组被称为值类型数组。
- 如果存储的元素都是引用类型对象, 该数组被称为 引用类型数组。
定义和初始化数组的不同方式
数组在必须在访问之前初始化,不能像这样访问数组或者给数组元素赋值:
int[] myIntArray; myIntArray[10] = 5; //错误, 该数组没有初始化
数组初始化的第一种方式是:用字面值形式指定数组的完整内容。该数组的长度编译器可以通过数组中的元素个数来推断数组的个数。
int [] array= {0,1,2,3,4,5};
第二种方式是:为数组的每一维指定元素的个数,然后使用new来初始化数组,但是下述程序的数组每一个元素都被自动初始化为该数组类型的默认值。 对于预定义类型, 整型默认为 0,浮点型默认值为0.0, 布尔型默认值为 false, 引用类型 默认值为 null。