数组是一种数据结构。
- 数组的索引是隐式的整数类型。
- 数组的索引是有序的,包含
Length
个元素的数组从0
索引到Length-1
。 - 数组的元素可以是任意类型,但必须都属于同一个类型。
- 数组的维度数量和每个维度的长度(元素的个数)不可以动态改变,不可以向数组添加、删除元素,但可以更改元素。
- 数组的元素允许重复的元素。
1.一维数组
//声明类型为int,长度为3的数组。
int[] a = new int[3];
//声明类型为int,长度为3的数组,并使用数组初始值设定项初始化。
int[] a = new int[3] { 1, 2, 3 };
//只使用数组初始值设定项并省略new int[3]声明并初始化数组,类型和长度由初始化推断确定。
int[] a = { 2, 3, 5, 7, 11, 13 };
如果在不初始化的情况下声明一维数组变量,则必须使用 new
运算符将数组赋予变量。
int[] array3;
//正确
array3 = new int[5] { 1, 3, 5, 7, 9 };
//错误
array3 = {1, 3, 5, 7, 9};
2.多维数组
多维数组是元素类型是一维数组的数组。
多维数组的维度 是 1 与 方括号内的逗号数量相加的结果。
//二维数组
int[,] a2 = new int[2, 3];
//等同于
int[,] a2 = new int[2, 3] { { 1, 2, 3 }, { 4, 5, 6 } };
//等同于
int[,] a2 = { { 1, 2, 3 }, { 4, 5, 6 } };
//三维数组
int[,,] a3 = new int[2, 3, 2];
//等同于
int[,,] a3 = new int[2, 3, 2] { { {1, 2}, {3, 4}, {5, 6} }, { {7, 8}, {9, 10}, {11, 12} } };
//等同于
int[,,] a3 = { { {1, 2}, {3, 4}, {5, 6} }, { {7, 8}, {9, 10}, {11, 12} } };
如果在不初始化的情况下声明多维数组变量,则必须使用 new
运算符将数组赋予变量。
int[,] array5;
//正确
array5 = new int[4,2] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };
//错误
array5 = {{1,2}, {3,4}, {5,6}, {7,8}};
3.交错数组
与多维数组的相同点是数组的元素类型都可以是数组,不同点是多维数组的作为元素的数组的长度都是一样的,而交错数组的作为元素的数组的长度不必全都一样。
第一行创建包含三个元素的数组,每个元素都是 int[]
类型,并且初始值均为 null
。第一个元素是由 10 个整数组成的数组,第二个是由 5 个整数组成的数组,而第三个是由 20 个整数组成的数组。
//交错数组
int[][] a = new int[3][];
a[0] = new int[2];
a[1] = new int[3];
a[2] = new int[5];
//等同于
//注意:与多维数组不同的是,元素类型不支持{}短语法
int[][] a = new int[3][] { new int[2], new int[3], new int[5], { 1, 2, 3 } };
//等同于
int[][] a = { new int[2], new int[3], new int[5] };
如果在不初始化的情况下声明交错数组变量,则必须使用 new
运算符将数组赋予变量。
int[][] a = new int[3][];
//正确
a = new int[3][] { new int[2], new int[3], new int[5] };
//错误
a = { new int[2], new int[3], new int[5] };
4.访问数组元素
//查询
//一维数组
b = a[i];
//二维数组
b = a[i, i];
//三维数组
b = a[i, i, i];
//赋值
//一维数组
a[i] = value;
//二维数组
a[i, i] = value;
//三维数组
a[i, i, i] = value;
5.获取数组长度
a.Length
原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/csharp/csharplang/7874.html