3.7C#引用类型之数组(Array)

数组(Array)是一种数据结构,可以用一个统一的数组名和不同的下标(或称索引,index)来确定数组中唯一的元素。根据数组的维度,可以将其分为一维数组、多维数组和交错数组。

  • 数组中的元素是有序的,包含 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

(0)
上一篇 2021年3月6日 01:45
下一篇 2021年3月8日 05:37

相关推荐

  • 3.1C#语言的命名空间(Namespace)

    1.命名空间声明 C# 10 中可使用文件范围的命名空间声明,一个文件中的所有类型都在一个命名空间中。文件范围的命名空间不能声明嵌套的命名空间或第二个文件范围的命名空间。 可以在两个或多个声明中定义一个命名空间。 2.using指令 2.1导入其它命名空间的类型 2.2创建命名空间别名 using 指令的声明…

    C#语言教程 2021年3月1日
    03640
  • 3.4C#引用类型之类(Class)

    1.类声明 2.继承 派生类只能有一个直接基类。但是,因为一个基类本身可能继承自另一个类,所以一个类可能会间接继承多个基类。省略基类相当于从 object 类型继承。 派生类会隐式获取基类的所有成员(除了基类的静态构造函数、实例构造函数、析构函数),所以无需在派生类再书写继承过来的基类成员,但您还可…

    C#语言教程 2021年3月4日
    02970
  • 1.5C#语言的语句(Statement)

    C#语言的语句往往以 ; 结尾。 1.空语句 空语句只含一个 ; 分号。不执行任何操作,可以在需要语句但不需要执行任何操作的地方使用。 2.代码块(block) 代码块是由在分隔符 { 和 } 内编写的语句组成。当代码块内语句为一条语句时,往往可以省略花括号,如果多条语句时,此时…

    C#语言教程 2021年1月5日
    03190

发表评论

登录后才能评论