数组一般用于存储用一类型的数据,即数组是相同类型的对象的集合
数组是一种引用类型,而不是值类型,数组是按数组名、数据元素的类型和维数来描述的,数组分为一维数组和多维数组。多维数组又分为矩形数组和交错数组。
数组的声明与初始化
可以一开始指定数组元素的个数,也可以一开始不知道,使用数组元素前动态地指定元素个数,一旦元素个数确定后,数组的长度就确定了
int [] a=new int [30];//创建一个包含30个int型元素的数组a,并在定义时指定元素个数为30
string [] b;
int number=int.Parse(Console.ReadLine());//从键盘接收元素个数
b=new String [number];
//指定数组b共有number个元素,也可以在声明语句中直接用简化形式为各元素赋初值
string [] mystring{"first","second","third"};
//但是不带new运算符的简化形式只能在声明语句中,比较下面的写法
string [] mystring;
mystring={"first","second","third"};//错误
数组的秩与数组长度
数组的秩是指数组的维数
数组的长度是数组中所有元素的个数
int [] a=new int [10]; //数组长度是100
int [,] b=new int[3,5]; //数组长度是3*5=15
一维数组
在一维数组中,数组的下标默认是从0开始索引的,加入数组共有30个元素,则其下标范围是0~29
程序中可以直接在中括号内指定下标来访问每个元素
多维数组
创建:
int [,] n1=new int[3,2]{{1,2},{3,4},{5,6}};
int [,] n2=new int[,]{{1,2},{3,4},{5,6}};
int [,] n3={{1,2},{3,4},{5,6}};
引用:
n1[2][1]
交错数组
交错数组相当于一维数组的每一个元素又是一个数组,也可以把交错数组成为“数组的数组”如果按照行列来排列数组的元素,也可以将交错数组理解为每一行的列数可以相同,也可以不相同
定义:
int [][] n1=new int[2][]
{
new int [] {2,4,6},
new int [] {1,3,5,7,9};
};
也可以写为
int [][] n1=new int [][]{new int [] {2,4,6}, new int []{1,3,5,7,9}};
或者写为
int [][] n3={new int [] {2,4,6},new int {1,3,5,7,9}};
string[][] b=new string[3][];
b[0]=new string[2]{"1","2"};
...
交叉数组的每一个元素即可以是一维数组,也可以是多维数组
动态改变数组大小
创建数组后,如果希望动态改变数组的大小,则调用该数组的Resize方法,重新分配一个具有指定大小的数组,然后将元素从旧数组复制到新数组,然后用新数组替换旧数组
public static void Resize<T>(ref T[] array,int newSize)
其中T表示数组类型,array为要调整大小的一维数组,该数组从零开始,如果为null则新建具有指定大小的数组,如果newSize大于旧数组的Length,则分配一个新数组,并将所有元素从旧数组复制到新数组。如果newSize小于旧数组的Length,则分配一个新数组,并将元素从旧数组复制到新数组知道新数组被填满为止,旧数组中的剩余元素被忽略。如果newSize与旧数组的Length相等,则不执行操作
数组元素的排序和查找
提供了Sort和Reverse这样的静态方法
数组的统计运算及数组和字符串之间的转换
计算数组中所有元素的平均值、求和、求最大数以及求最小数等,这些可以利用数组的Average方法、Sum方法、Max方法和Min方法来实现
对于字符串数组,可以直接利用字符串的Join方法和Split方法实现字符串和字符串组之间的转换