文章目录
- 前言
- 列表定义
- 构造函数
- 属性
- 常用方法
- 集合与列表的区别
- 对比
- 拆箱装箱
- 类型安全
- 总结
列表定义
List定义在using System.Collections.Generic命名空间下,使用时需要对该命名空间进行引用。
List<T> 列表名 = new List<T>(); //其中T代表着列表中的元素类型
我们突然发现 好像这个所谓的列表 和 我们上一章所学习到的集合 没什么区别啊 只是关键字不相同罢了 那具体一点到底有什么区别呢 我们往下来看。
构造函数
List<T>() //初始化List<T>类的新实例,该实例为空并且具有默认初始容量。
List<T>(IEnumerable<T>) //初始化List<T>()类的新实例,该类型包含从指定集合复制的元素
List<T>(Int32) //初始化List<T>类的新实例,该实例为空且具有指定的初始容量。
属性
Count //获取List<T>中包含的元素数量。
常用方法
- 添加元素
2. 插入元素
3. 移除元素
4. 元素排序
5. 包含
这些 就是列表基本的一些常用的方法 可是我们学会了这么多 那么还是没搞懂究竟他与集合有什么区别 下面请看一图总结:
集合与列表的区别
它们之间的对比其实就在于“泛型”这个概念上:
对比
通过使用泛型,我们可以极大地提高代码的重用度,避免了隐式的装箱、拆箱,在一定程度上提升了应用程序的性能。通过创建泛型类,可以创建一个在编译时类型安全的集合
拆箱装箱
与我们之前讲解泛型时 所说的一样 这样可以避免很多的“装箱”“拆箱”的操作
ArrayList list=new ArrayList();
list.Add(20); 装箱,list存放的是object类型元素,须将值类型转化为引用类型。
int i=(int)list[0]; 拆箱,list[0]的类型是object,要赋值就得把引用类型转化为值类型。
如果换成泛型编程,就不会有装箱和拆箱的性能损失
List<int> list=new List<int>();
list.Add(20); 因为指定了用int来实例化,因此不必装箱。
int i=list[0]; 同样地,访问时也不需要拆箱
类型安全
ArrayList list = new ArrayList();
list.Add(3);
list.Add("It is raining in Redmond.");
foreach(int i in list)
{
Debug.Log (i); 异常,因为并不是集合中的所有元素都可以转化为int。
}
如果改用泛型编程,则可以避免这种异常,让编译器检查出错误
List<int> list=new List<int>();
list.Add(20);
list.Add(“string”); 编译时报错,只能将整数类型添加到集合中
总结
其实归根结底 还是将泛型引用到了别的地方 来方便我们更快捷的进行操作 所以大家应该更要清楚泛型的重要性和实用性 避免很多资源的浪费。