第十六章 数组

 数组:始终是应用类型、内存分配也是分配在堆上的。不管你数组中存放的类型是什么比如:

Int[] ary=new int[100]; string[] ary2=new string[220];

1.所有数组类型都从System.Array抽象类隐式派生,后者又派生自System.Object。

2.所有数组隐式实现IEnumerableICollectionIList  (System.Array也实现这三个接口)

 

3.泛型接口:

所有数组都会被CLR实现 泛型接口。

IEnumerable<T>,ICollection<T>IList<T>    T 如果是引用类型,那么CLR也会对 T的基类型实现泛型接口,

比如刚刚定义的: ary2 CLR会为他实现IEnumerable<string>,ICollection<string>IList<string>同时也会为基类型的泛型接口

  IEnumerable<Object>,ICollection<Object>IList<Object>  等,

但是呢要是 T是值类型比如刚定义的ary

那么仅仅是实现了IEnumerable<int>,ICollection<int>IList<int> (有的网友认为不会产生这个接口实际上呢是有的)

 

4.数组分类:一维数组、多维数组、交错数组(没用过~~

5.数组类型转化:要求维度相同、非值类型(值类型通过copy实现)

6.数组传递返回:实参实际上传递的是引用、出参可以是null 或者new int[0]

 

数组基本不常用、被大量的List家族所替代了

posted on 2019-05-28 08:23  无觉-李敏  阅读(134)  评论(0编辑  收藏  举报