.NET中数组的隐秘特性[9]

[入库:2005年8月18日] [更新:2007年3月25日]

本文简介:选择自 dy_2000_abc 的 blog


       你不能通过反射来访问数组的内部字段,那是不是需要使用非安全代码来访问内部字段?在这里,没有这个必要,因为array的内部字段都通过公共方法和属性公开了。比如:getlength()方法返回数组中指定维度的元素个数。相关的更详细的内容可以参考msnd。
      上面提到了两种数组的分类:sz数组和md数组;值类型数组和引用类型数组。在代码中我们该如何判断它们?
      下面的代码用来判断数组是否sz数组:
if (array.rank==1 && array.getlowerbound(0)==0){}
      下面的代码用来判断数组是否值类型数组:
if ((elementtype = array.gettype().getelementtype()) && elementtype.issubclassof(typeof(valuetype)) && elementtype != typeof(enum) && elementtype != typeof(valuetype)){}
      有意思的是,enum[]或者valuetype[]都不是值类型数组,它们包含的元素是指向装箱值类型的引用。
动态的arraylist类
       arraylist类是处理动态数组的一个很有用的类,除此之外,它还可以用来封装集合类。
       arraylist类允许创建一个内部数组对象并对数组进行直接的修改。没有显式设置arraylist容量的情况下,使用默认容量(16),arraylist创建的数组的长度是16。下面表中列出的是arraylist类的四个内部成员。

变量

类型

描述

_items

object[]

内部数组

_size

int

arraylist实例实际包含的元素数

_version

int

在每次对arraylist进行修改后,_version都会递增。

_defaultcapacity

int

本文关键:数组 Array ArrayList .net
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top