C# 数组.md 5.2 KB

数组

数组从字面上理解就是存放一组数,但在 C# 语言中数组存放的并不一定是数字,也可以是其他数据类型。

在一个数组中存放的值都是同一数据类型的,并且可以通过循环以及数据操作的方法对数组的值进行运算或操作。

数组中某个指定的元素是通过索引来访问的。

所有的数组都是由连续的内存位置组成的。最低的地址对应第一个元素,最高的地址对应最后一个元素。

C# 中数组从零开始建立索引,即数组索引从零开始。

声明数组时,方括号[]必须跟在类型后面,而不是标识符后面。

定义

元素:数组的独立数据项 秩/维度:数组可以有任何为正数的维度数 维度长度:数组的每个维度有一个长度,就是这个方向的位置个数 数组长度:数组的所有维度中的元素的中和

在 C# 中,将方括号放在标识符后是不合法的语法。

    int[] table; // not int table[];

另一细节是,数组的大小不是其类型的一部分,这使得可以声明一个数组并向它分配 int 对象的任意数组,而不管数组长度如何。

数组的类型

  • 一维数组:单行元素或者元素向量
  • 多维数组:是由主向量中的位置组成的,每一个位置本身又是一个数组,称为子数组。
    1. 矩形数组:
      • 某个维度的所有子数组有相同长度的多维数组
      • 不管有多少维度,总是使用一组方括号
    2. 交错数组
      • 每个子数组都是独立的多维度数组
      • 可以有不同长度的子数组
      • 为数组的每一个维度使用一组方括号

一维数组

一维数组在数组中最常用,即将一组值存放到一个数组中,并为其定义一个名称,通过数组中元素的位置来存取值。

创建一维数组的语法形式如下。

//定义数组
数据类型[]  数组名;
//初始化数组中的元素
数据类型[]  数组名 = new  数据类型[长度];
数据类型[]  数组名 = {值 1, 值 2, ...};
数据类型[]  数组名 = new  数据类型[长度]{值 1,值 2,...};

在定义数组时定义的数据类型代表了数组中每个元素的数据类型。

在使用数组前必须初始化数据,即为数组赋初值。

在初始化数组时指定了数组中的长度,也就是数组中能存放的元素个数。

在指定数组的长度后,数组中的元素会被系统自动赋予初始值,与类中段的初始化类似,数值类型的值为 0、引用类型的值为 null。

如果在初始化数组中直接对数组赋值了,那么数组中值的个数就是数组的长度。

由于在数组中存放了多个元素,在存取数组中的元素时要使用下标来存取,类似于取字符串中的字符。

多维数组

在 C# 语言里多维数组中比较常用的是二维数组.

定义多维数组的语法形式如下。

//定义多维数组
数据类型[ , , ...]  数组名;
//创建多维数组并初始化
数据类型[ , , ...]   数组名 = new  数据类型[m,n,...]  {{ , , ...},{ , , ...}};

从上面定义的语法可以看出,它与一维数组的定义非常类似,每多一个维度则在定义时的[]中增加一个“,”。

存取数组中的值也是将下标用“,”隔开。

在遍历多维数组元素时使用 GetLength(维度) 方法能获取多维数组中每一维的元素,维度也是从 0 开始的,因此在该实例中获取数组中第一维的值时使用的是 points.GetLength(0)。

在 C# 语言中不仅支持上面给出的多维数组,也支持锯齿型数组,即在多维数组中的每一维中所存放值的个数不同。

锯齿型数组也被称为数组中的数组。定义锯齿型数组的语法形式如下。

数据类型[][]  数组名 = new 数据类型[数组长度][];
数组名[0] = new 数据类型[数组长度];

数组是对象

数组实例是从 System.Array 继承的对象。

  • Rank 返回数组维度数的属性
  • Length 返回数组长度的属性

数组是引用类型,单数数组的元素可以是值类型也可以是引用类型。

foreach 循环用法详解

C# foreach 循环用于列举出集合中所有的元素,foreach 语句中的表达式由关键字 in 隔开的两个项组成。

in 右边的项是集合名,in 左边的项是变量名,用来存放该集合中的每个元素。

该循环的运行过程如下:每一次循环时,从集合中取出一个新的元素值。放到只读变量中去,如果括号中的整个表达式返回值为 true,foreach 块中的语句就能够执行。

一旦集合中的元素都已经被访问到,整个表达式的值为 false,控制流程就转入到 foreach 块后面的执行语句。

foreach 语句经常与数组一起使用,在 C# 语言中提供了 foreach 语句遍历数组中的元素,具体的语法形式 如下。

foreach(数据类型  变量名  in  数组名)
{
    //语句块;
}

这里变量名的数据类型必须与数组的数据类型相兼容。

在 foreach 循环中,如果要输出数组中的元素,不需要使用数组中的下标,直接输出变量名即可。

foreach 语句仅能用于数组、字符串或集合类数据类型。