数 组
如果需要使用同一类型的多个对象,就可以使用集合和数组。C#用特殊的记号声明和使用数组。Array类在后台发挥作用,为数组中元素的排序和过滤提供了几个方法。
简单数组
在声明数组时,应先定义数组中元素的类型,其后是一个空方括号和一个变量名。
声明了数组后,就必须为数组分配内存,以保存数组的所有元素。数组是引用类型,所以必须给它分配堆上的内存。为此,应使用new运算符,指定数组中元素的类型和数量来初始化数组的变量。
访问数组元素
数组在声明和初始化后,就可以使用索引器访问其中的元素了。数组只支持有整型参数的索引器。
使用引用类型
不但能声明预定义类型的数组,还可以声明定制类型的数组。
多维数组
一般数组(也称为一维数组)用一个整数来索引。多维数组用两个或多个整数来索引。
锯齿数组
而锯齿数组的大小设置是比较灵活的,在锯齿数组中,每一行都可以有不同的大小。
在声明锯齿数组时,要依次放置开闭括号。在初始化锯齿数组时,先设置该数组包含的行数。定义各行中元素个数的第二个括号设置为空,因为这类数组的每一行包含不同的元素数。
Array类
用括号声明数组是C#中使用Array类的记号。在后台使用C#语法,会创建一个派生于抽象基类Array的新类。这样,就可以使用Array类为每个C#数组定义的方法和属性了。
创建数组
Array类是一个抽象类,所以不能使用构造函数来创建数组。但除了可以使用C#语法创建数组实例之外,还可以使用静态方法CreateInstance()创建数组。如果事先不知道元素的类型,就可以使用该静态方法,因为类型可以作为Type对象传送给CreateInstance()方法。
复制数组
因为数组是引用类型,所以将一个数组变量赋予另一个数组变量,就会得到两个指向同一数组的变量。而复制数组,会使数组实现ICloneable接口。这个接口定义的Clone()方法会创建数组的浅副本。
除了使用Clone()方法之外,还可以使用Array.Copy()方法创建浅副本。但Clone()方法和Copy()方法有一个重要区别:Clone()方法会创建一个新数组,而Copy()方法只是传送了阶数相同、有足够元素空间的已有数组。
如果需要包含引用类型的数组的深副本,就必须迭代数组,创建新对象。
排序
Array类实现了对数组中元素的冒泡排序。Sort()方法需要数组中的元素实现IComparable接口。
yield语句