你不能通过反射来访问数组的内部字段,那是不是需要使用非安全代码来访问内部字段?在这里,没有这个必要,因为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
相关方案
|