数组
数组的元素与元素类型的概念
C#中数组索引值是从0开始的
数组是由抽象基类型System.Array继承的引用类型
数组是相同数据类型的元素的集合,各元素有先后顺序,在内存中按这个顺序
C#数组的新特性:
A.声明的方法不同,[]要放在类型的后面,如int [] table,而不是int table []
B.数组的大小声明不同:不能将大小声明时放在[]中,它是动态的,可以用如下方法:
int [] numbers;
numbers=new int[10];
numbers=new int[20];
1.一维数组的声明
int [] intArray ;数组声明时并没有为数组元素分配内存,因此[]中不能指出数组元素个数,即数组长度,
也不能访问它的任何元素.必须用new为它分配内存空间:intArray=new int[4];
当然也可以合在一起:int [] intArray=new int [4];
2.多维数组的声明
即数组的数组
string [,] arrayName;
int [,] myArray=new int[4,2];
3.锯齿数组的声明
byte[][]scores;
byte[][] scores=new byte[5][];
for (int i=0; i<scores.Length;i++)
{
scores[i]=new byte[i+3];//同一维下,大小不同
}
也可以把锯齿数据和矩形数组混合在一起
int [][,,][,] numbers;
数组是对象,必须要在后面进行实例化.
三.数组初始化
1.创建数组空间
intArray=new int [10];
也可以与声明数组合在一起,用一条语句完成:
int [] intArray=new int[10];
也可以在创建数组空间的时候,同时将初值给出来:
int [] MyIntArray={1,2,4,5};
2.数组的初始化
a.一维数组的初始化
int [] numbers=new int[5]{1,2,3,4,5};
数组的大小也可以忽略:
int[]numbers=new int []{1,2,3,4,5};
如果有初始化数据,那么也可以忽略new:
int[]numbers={1,2,3,4,5};
b.二维数据类似一维
int[,] numbers=new int[3,2]{{1,2},{3,4},{5,6}};
int[,] numbers=new int[,]{{1,2},{3,4},{5,6}};
int[,] numbers ={{1,2},{3,4},{5,6}};
c.锯齿数组的初始化
int [][]numbers=new int[2][]{new int[]{2,3,4},new int[]{5,6,7,8,9}};
第一维大小也可以忽略:
int [][]numbers=new int[][]{new int[]{2,3,4},new int[]{5,6,7,8,9}};
3.访问数组成员
a.使用普通方法访问数组成员:
numbers[1,1]=4;(锯齿数组一样)
b.使用foreach -in 语句循环访问数组
foreach (int i in numbers){}
4.数组是对象,因此可以使用System.Array类中的属性和方法:numbers.Length;
5.传递数组参数
可以把初始化的数组传递给方法:PrintArray(myArray);
也可以在一步中初始化并传递一个新数组:PrintArray(new int[]{1,2,3});
6.使用ref 和out传递数组
public static void MyMethod(out int[]arr)
{
arr=new int [10];//明确给arr赋值
}
ref则在里面可以执行初始化或已经在外进行过初始化