所谓数组,是有序的元素序列。 若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。
简单来说,数组是一个容器,存储相同类型的数据,并且容量是固定的。下面我们来简单整理一下数组的基本内容。
数组的存储方式;
所有的数组都是由连续的内存位置组成的。最低的地址对应第一个元素,最高的地址对应最后一个元素。
一维数组:
声明数组
datatype[] arrayName;
注:datatype定义存储的数据类型,[]表示数组的维数,arrayName 数组名;
例如:
int[] arr;
初始化数组
直接定义一个已知元素值的数组
类型[] arr={元素1,元素2,元素3,...};这种格式只有在创建数组时才可以用
定义一个已知长度的数组;
类型[] arr=new 类型[长度];
定义一个已知长度已知数据的数组
类型[] arr=new 类型[长度]{元素1,元素2,元素3,...}; 虽然没有定义长度,但通过后面的元素也可以确定数组的长度 类型[] arr=new 类型[]{元素1,元素2,元素3,...};
注:
- 元素就是数组中存储的数据;
- 长度就是数组中可存储的元素个数
例如:
int[] arr={1,2,3};//数组总共存储了3个元素
int[] brr=new int[4];//数组存储了4个0
bool[] crr=new bool[3];//数组中存储了3个false
访问数组中的元素
arrayname[下标]
注:下标是数组中的索引,编号,第一个元素的下标是0,第二个是
1,依次类推,最后一个长度-1;
例如:
int[] arr={1,3,5};
Console.WriteLine(arr[1]);//访问第二个元素
>>结果:3
修改指定下标的值
arrayname[下标]=值;
注:通过赋值符号=,可以给数组指定的下标重新赋值,但数据可以删除或添加新元素,因为是固定长度;
例如:
int[] arr={1,3,5,7}; arr[0]=2;
Console.WriteLine(arr[0]);
>>结果:2;//数组第一个下标的元素发生改变了
访问数组的长度arrayname.Length;
例如:
int[] arr={1,3,5,4};
Console.WriteLine(arr.Length);
>>结果:4
注意:没有增删的方法
多维数组
C# 支持多维数组。多维数组又称为矩形数组。
声明数组
声明一个二维数组,如下: 类型[,] 数组名;
声明一个三维数组,如下: 类型[,,] 数组名;
二维数组
多维数组最简单的形式是二维数组。一个二维数组,在本质上,是一个一维数组的列表。
一个二维数组可以被认为是一个带有 x 行和 y 列的表格。下面是一个二维数组a,包含 3 行和 4 列:
所以访问二维数组的元素:a[行下标,列下标];
初始化二维数组:
int[,] arr=new int[行数,列数];
int[,] arr={{元素,元素},{元素,元素},{元素,元素}}
int[,] arr=new int[,]{{},{},{}};
访问二维数组的元素:
数组名[行下标,列下标]
例如:arr[2,3]
指定下标赋值:
数组名[行下标,列下标]=新值;
例如:
arr[2,3]=2000;
访问数组的长度:
new 类型[行数,列数]
- 行数:数组名.GetLength(0);
- 列数 :数组名.GetLength(1);
- 总的元素个数:数组名.Length
//多维数组:二维数组,矩形数组bool[,] crr=new bool[3,4];
//行数,二维数组的行数
Console.WriteLine("行数:"+crr.GetLength(0));
//列数,二维数组的列数
Console.WriteLine("列数:"+crr.GetLength(1));
//返回二维数组中的总元素个数: Console.WriteLine(crr.Length);
交错数组
交错数组是数组的数组,一个一维数组中可以存储多个不同长度的一维数组从而形成了交错数组的二维数组;
声明数组
您可以声明一个带有 int 值的交错数组 scores,如下所示:
int [][] scores;
声明数组不占内存,创建上面的数组:
int[][] scores = new int[5][];
for (int i = 0; i < scores.Length; i++)
{
scores[i] = new int[4];
}
初始化数组
您可以初始化一个交错数组,如下所示:
int[][] scores = new int[2][]{new int[]{92,93,94},new int[]{85,66,87,88}};
其中,scores 是一个由两个整型数组组成的数组 -- scores[0] 是一个带有 3 个整数的数组,scores[1] 是一个带有 4 个整数的数组。
循环遍历交错数组
如下所示:
for(int i=0;i<scores.Length;i++){//循环外维的长度
for(int j=0;j<scores[i].Length;j++){//循环内维的长度
Console.WriteLine(scores[i][j]);
}
}
数组总结:
int[] 是一维数组,一组相同类型的数据的集合;
int[,] 是多维二维数组,它就是传统意义上 n x m 的表;
int[][] 是交错数组二维数组,为不定数组,它其实是一个 int[] 里嵌套着int[],可以理解为 (int[])[]。
如下图所示: