表示了一组特定类型且数量固定的变量
数组的元素总是存储在连续的内存块里,读取效率高
所有的数组都继承于System.Array
Length 取得数组长度
char[] words = new char[5];
char[] words = new char[] {'a','b','c','d','e'};
char[] words = {'a','b','c','d','e'};
- 创建数组时,所有的元素都会被初始化,其值为该类型的默认值
- 类型的默认值就是内存按位归零的结果
值类型 vs 引用类型
- 性能有区别
- 值类型: 每个元素都作为数组的一部分进行分配内存
- 引用类型: 创建数组时就是创建了一堆null引用 (建议对元素是引用类型的数组初始化后对元素都初始化)
- 数组本身是引用类型
int []a = null;
多维数组
矩形数组 代表着n维内存块
int[,] matrix = new int[3,3]\
交错数组
- 元素类型为数组的数组
- 使用连续的中括号来声明和代表不同的维度
int[][] matrix = new int [3][]
- 内层维度并没有具体指明,内层维度的数组可以是任意长度
边界检查
- 所有数组的索引都会被运行时检查
- 如果使用了不合理的索引, 抛出indexOutOfRangeException
- 通常边界检查对性能影响很小,JIT编译器可以执行一些优化,例如在进入循环前预先对所有的索引进行安全检查,避免在迭代中检查
- c#还提供了unsafe代码,可以绕过边界检查
网友评论