第十六章 数组
数组:始终是应用类型、内存分配也是分配在堆上的。不管你数组中存放的类型是什么比如:
Int[] ary=new int[100]; string[] ary2=new string[220];
1.所有数组类型都从System.Array抽象类隐式派生,后者又派生自System.Object。
2.所有数组隐式实现IEnumerable、ICollection、IList (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家族所替代了