Microsoft.NET框架程序设计--14 数组

   通用语言运行时(CLR)支持一维数组、多维数组以及交错数组(jagged array ,也就是数组的数组)。所有的数组类型都隐含继承自System.Array,System.Array本身继承自System.Object。这一晚这数组总是分配在托管堆上的引用类型,并且应用程序中的数组变量包含的是一个指向数组的引用,而非数组本身。

  数组元素为值类型时,代码返回的是这些值的内存块的地址,而当数组元素为引用类型时,代码返回的是保存这些对象引用的内存块的地址。

 多维数组的创建形式:String[,,] myStrings=new String[5,3,10];

1.所有数组的基类:System.Array

Array包含了几种静态成员和实例成员,并且实现了几个接口:ICloneable、IEnumberable、ICollection、以及IList。

下面我们说一下System.Array的成员

  (1) Rank  只读实例属性   返回数组的维数

  (2)GetLength 实例方法 返回数组中指定维数的元素个数

  (3)Length 只读实例属性 返回数组红所有元素的总个数

  (4)GetLowerBound 实例方法 返回数组中指定维数的下限,大多数时候总是为0

  (5)GetUpperBound 实例方法 返回数组维数的上限,大多数总为指定维数的元素个数减1

  (6)IsReadOnly 只读实例属性 指示数组是否为只读数组。对数组来将,该值总为false

  (7)IsSynchronized 只读实例属性 指示数组的访问是否线程安全,对于数组来讲,该值总为false

  (8)SyncRoot 只读实例属性 返回一个可以用来同步访问数组的对象。对于数组来讲,该值终身指向数组本身

  (9)IsFixedSize 只读实例属性 指示数组的大小是否固定。对于数组来讲,该值总是true

  (10)GetValue 实例方法 返回一个数组中指定位置的元素的引用。如果数组中包含的是值类型,返回值将指向对应元素的一个装箱形式的拷贝

  (11)SetValue 实例方法 设置数组中指定位置的元素值

  (12)GetEnumerator 实例方法 为数组返回一个IEnumerator。

  (13)Sort 静态方法 对于一个数组、两个数组、或一个数组的一部分中的元素进行排序。数组元素必须实现IComparer接口

  (14)BinarySerach 静态方法 使用二分搜索法来搜索指定数组的指定元素。该方法假定数组元素本身已经排好了序。数组元素类型必须实现IComparer接口

  (15)IndexOf 静态方法 返回在一维数组或者他的一部分中某个值第一次出现的索引值

  (16)LastIndexOf 静态方法 返回在一维数组或者它的一部分中某个值最后出现的索引值

  (17)Reverse 静态方法 反转一维数组或者他的一部分中的元素的顺序

  (18)Clone 实例方法 返回一个新创建的数组,该数组是源数组的一个浅拷贝

  (19)CopyTo 实例方法 将一个数组中的元素拷贝到另一个数组中

  (20)Copy 静态方法 将一个数组中的部分元素拷贝到另一个数组中,并根据需要执行适当的转型

  (21)Clear 静态方法 将数组中部分元素设为0或者null空引用

  (22)CreateInstance 静态方法 创建一个数组实例。该方法很少使用,他允许我们动态定义拥有的任何类型、任何维数、任何上下限的数组。

  (23)Initialize 实例方法 该方法会为值类型数组中的每一个元素调用默认的构造器。

 2.数组的转型

   对于元素为引用类型的数组,CLR允许我们隐式地将原数组中的元素由一种类型转换成为另一种类型。要使这样的转型成功,连个数组类型都必须有同样的维数,并且在原数组元素类型和目标数组元素之间必须存在隐式或者显示的转换(如果原数组类型和目标数组类型之间只存在显示转换,那么要将原数组转化成目标数组,则必须进行显示的转换)。CLR不允许将元素为值类型的数组转型为任何其他类型(通常使用Array.Copy,我们可以创建一个新的数组来达到期望的效果)

Array.Copy方法不仅能使我们可以快速地将一个数组中的元素拷贝到另一个数组红。如果需要的话,Copy方法还能够在拷贝每一个元素时进行相应的类型转换。Copy方法能够执行以下几种转换。

  (1)将值类型元素装箱为引用类型元素,例如将一个int32[]拷贝到一个Object[]中时

  (2)将引用类型元素拆箱为值类型元素,例如在一个Obejct[]拷贝到一个int32[]中是

  (3)拓宽CLR基类型。例如在将一个int32[]拷贝到一个Double[]中时。

3.重新调整数组长度

当我们编译时不知道数组元素的类型时,Array的静态方法CreateInstance可以帮助我们动态地创建数组。当我们编译时不知道数组的维数和每个维数的上下限时,这时CreatInstance方法也显得十分有用。

 

 

你可能感兴趣的:(Microsoft)