目录
数组
数组的定义:
- 由一个变量表示一组同类型的数据元素。
- 元素:数组的独立数据项称为元素。数组的所有元素必须是相同类型的,或继承自相同的类型。
- 维度/秩:数组的维度称为秩。
- 维度长度:每一个维度方向的长度。
- 数组长度:数组所有维度中的元素总数。
- 每个数据元素通过该变量名称和方括号中的索引来访问。
- 数组是引用类型
- 数组元素可以是引用类型,也可以是值类型
- 若存储的数组元素都是引用类型,数组称为引用类型数组
- 若存储的数组元素都是值类型,数组称为值类型数组
访问数组元素的语法:
数组名[索引]
使用数组的要求:
- C#不支持动态数组。数组一旦被创建,大小就固定了。
- 索引是从0开始的。
1.数组的类型
数组的类型有两种:一维数组和多维数组
- 一维数组:可以认为是单行元素或元素向量
- 多维数组:由主向量中的位置组成,每一个位置本身又是一个数组,称为子数组。
多维数组也有两种:矩形数组和交错数组
- 矩形数组:某个维度所有子数组具有相同长度的多维数组,且不管有多少维度,总是一组方括号
- 交错数组:每一个子数组都是独立数组的多维数组,可以有不同长度的子数组
图示:
1.1 一维数组和矩形数组
(因为一维数组和矩形数组非常相似,所以放一起讲)
声明一维数组、矩形数组的语法:
数组类型[ ] 数组名;
示例:
int[ ] a; //一维整形数组a
int[ ] b; //二维整形数组b
注:和C、C++不同,C#声明数组时,方括号在数组类型后。而不是数组名后。
声明一维数组、矩形数组的要求:
- 不能在方括号中放数组维度长度。
- 数组声明后,维度数是固定的。
1.1.1实例化一维数组和矩形数组
实例化一维数组、矩形数组的语法(数组创建表达式):
数组类型[ ] 数组名=new 数组类型[...];
示例:
int[] a = new int[5]; //一维整形数组a,含有5个元素
int[] b = new int[2,5]; //二维整形数组b,含有10个元素
注:和C、C++不同,C#声明数组时,方括号在数组类型后。而不是数组名后。
图示:
注意:与对象创建表达式不一样,数组创建表达式不包含圆括号。
1.2 访问数组元素
访问数组元素的语法:
数组名[索引]
示例:
1.3 初始化数组
初始化数组的定义:当数组被创建时,每一个元素会自动初始化类型的值。而显式初始化相当于手动(自己定义)初始化类型的值。
- 自动初始化的默认值:整形为0,浮点为0.0,布尔型为false,引用为null。
1.3.1 显式初始化一维数组
1.3.2 显式初始化矩形数组
1.3.3 显式初始化的快捷语法
1.3.4 隐式类型数组
隐式类型数组的定义:指数组类型用var关键字来推断数组类型。
隐式类型数组的语法:
var[ ] 数组名 = new[ , ] {...};
1.4 交错数组
交错数组的定义:数组的数组。
图示:
1.4.1 声明交错数组
声明交错数组的语法:
数据类型[ ][ ] 数组名;
数据类型[ ][ ][ ] 数组名;
声明交错数组的要求:
- 维度必须大于1
- 不能在方括号中放数组维度长度。
1.4.2 实例化交错数组
由于交错数组是独立数组的数组,所以每一个数组必须独立创建。
实例化交错数组的步骤:
- 实例化顶层数组
- 分别实例化每一个子数组,把新建数组的引用赋给它们所属数组的合适元素。
1.4.3 实例化交错数组的快捷方法
1.5 交错数组和矩形数组的区别
2.数组的补充
2.1 Clone方法
Clone方法的作用:创建数组本身的副本。
Clone方法的语法:
int[] Arr1={1,2,3};
int[] Arr2=(int[])Arr1.Clone();
使用Clone方法的要求:
- Clone方法返回的是object类型的引用,它必须被强制转换成数组类型。