经常看数组每次都看自己的笔记,分享下吧。
1.数组声明和初始化
由于数组是引用类型,所以应该用new来初始化数组。
(1)一维
Int[] a={1,2};//这样也可以的。
Int[] a=new int[2]{1,2};//定大小(元素个数与数组大小必须匹配)
Int[] a=new int[]{2,3,3};//由值定义大小
Int[] a=new int[size];//常量定义
Const int size=3;
(2)多维
Int[,] a=new int[2,2];
Int[,] a={{1,2},{2,3}};//
用数组初始化器(用字面值初始化)时,必须指定每个元素的值,不能遗漏。
针对一维数组可以用foreach来循环访问每个元素。
Foreach(int I in myInt){}
(3)变长数组
注意:子数组是不能指定的,而必须分开指定。
例:Int[][] a;
a=new int[2][];
a[0]=new int[4];
a[1]=new int[5];
或 a=new int[2][]{new int[]{1,2},new int[]{3,4}};
例:int[][] a={new int[]{1,2,3},new int[]{3,3,3}};
2Array类
此类是作为所有数组的虚基类,当用C#语法声明了数组,实际上就继承了它的方法和属性。
属性 说明
Length 返回元素个数,返回int型,如果多维数组,返回所有阶的元 素个数
Longlength 返回元素个数,只是用Long型返回的。
Rank 返回数组的维数
常用方法
CreateInstance(),SetValue(),Sort()
3.迭代器
迭代器的定义是,它是一个代码块,按顺序提供了要在foreach循环中使用的所有值,一般情况下,这个代码块是方法,但也可以使用属性访问器和其代码块作为迭代器。
(1)如果要迭代一个类,使用方法GetEnumerator(),其返回类型是IEnumerator就可以了。
(2)如果要迭代一个类成员,例如方法,则返回类型IEnumerable。
在迭代器块中,使用yeild关键字选择要在foreach循环中使用的值。可以使用yield return;来中止返回值。
Public static IEnumerable SimpleList()//迭代一个类成员
{
Yield return “str1”;
Yield return “str2”;
}
Foreach(string item in SimpleList){}
Public IEnumerator GetEnumerator()//如果类中存在这个方法并且返回相应接口就可以迭代一个类。一般类重写IEnumerable接口来实现,泛型和非泛型都实现
{
Yield return “ok”;
}