18.3 数组派生自Array对象
在第1章学过了CTS,知道了数组也是引用类型,但是大家有没有想过为什么数组是引用类型?事实上,数组类型派生自System.Array类型,后者是一个抽象类,因此数组也是一个类(class)类型,因为类属于引用类型,因此数组也是引用类型。虽然我们知道了System.Array类型是数组的基类,但并不能直接从它继承。可以使用System.Array类型变量的引用来指向数组类型,也就是说,从数组类型到System.Array类型的转换可以隐式进行,编译器会自动进行转换,如下:
int[]array1=new int[10];
Array array=array1;//隐式转换
但是,如果需要从System.Array类型转换到数组类型,就需要显式的类型转换了,如:
int[]_array=(int[])array;//显式转换
因为System.Array类型是所有数组类型的抽象基类型,那么System.Array类型所具有的属性以及其他的类成员也被数组类型所继承,并可以使用。例如:
❑GetLength(int dimension)方法:可以获取数组指定维中的元素数;
❑Length属性:可以获取数组所有维数中元素的总数;
❑Rank属性:可以获取数组的维数。
以上列出的只是部分方法和属性,更多的将在18.11节进行介绍,请读者自行参阅。图18-4说明了数组和Array对象的这种继承关系。
图 18-4 数组继承自Array对象