Q-->question A-->answer M-->mention
The Chapter 13th Array
M:数组始终为引用类型,其在堆上分配内存,数组对象所占用的内在块将包括一个类型对象指针及一个同步索引块和一些额外成员.
M:如有可能应当尽可能使用0基数组,有时也叫向量.
M:数组类型的转换=>
1.元素为引用类型的,可以进行隐式或显示转换,但维数必须相同
2.元素为值类型的,不能转换为任何类型,但可以通过Array.Copy()来向新数组添入元素,Copy()可以实现如Object[]到int[]的相互转换,也能加宽CLR基元类型,也可以向下兼容.但Copy()执行的是浅拷贝.
M:都有数组都隐式实现了IEnumerable,ICollection和平IList,引用类型的数组可以传递给以上三个接口做为参数的方法.而值类型的则不然,因为其在内存中的布局不同于引用类型
M:如果某个方法需返回一个数组,那么即使数组中无元素,也应该返回零长度的数组,而不是null
M:数组的静态方法CreateInstance()可以创建下界非零的数组
M:在迭代访问数组元素时,不要用本地变量来存Array.Length,因为编译器会进行优化,会只调用一次Array.Length,然后将其保存在一个临时变量中.