目录
数组
1.数组的类型
1.1 一维数组和矩形数组
1.1.1实例化一维数组和矩形数组
1.2 访问数组元素
1.3 初始化数组
1.3.1 显式初始化一维数组
1.3.2 显式初始化矩形数组
1.3.3 显式初始化的快捷语法
1.3.4 隐式类型数组
1.4 交错数组
1.4.1 声明交错数组
1.4.2 实例化交错数组
1.4.3 实例化交错数组的快捷方法
1.5 交错数组和矩形数组的区别
2.数组的补充
2.1 Clone方法
数组
数组的定义:
- 由一个变量表示一组同类型的数据元素。
- 元素:数组的独立数据项称为元素。数组的所有元素必须是相同类型的,或继承自相同的类型。
- 维度/秩:数组的维度称为秩。
- 维度长度:每一个维度方向的长度。
- 数组长度:数组所有维度中的元素总数。
- 每个数据元素通过该变量名称和方括号中的索引来访问。
- 数组是引用类型
- 数组元素可以是引用类型,也可以是值类型
- 若存储的数组元素都是引用类型,数组称为引用类型数组
- 若存储的数组元素都是值类型,数组称为值类型数组
访问数组元素的语法:
数组名[索引]
使用数组的要求:
- 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类型的引用,它必须被强制转换成数组类型。