文章目录

  • 前言
  • 列表定义
  • 构造函数
  • 属性
  • 常用方法
  • 集合与列表的区别
  • 对比
  • 拆箱装箱
  • 类型安全
  • 总结


列表定义

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>中包含的元素数量。

常用方法

  1. 添加元素

    2. 插入元素

    3. 移除元素

    4. 元素排序

    5. 包含

    这些 就是列表基本的一些常用的方法 可是我们学会了这么多 那么还是没搞懂究竟他与集合有什么区别 下面请看一图总结:

集合与列表的区别

unity 限制list长度_unity 限制list长度


它们之间的对比其实就在于“泛型”这个概念上:

对比

通过使用泛型,我们可以极大地提高代码的重用度,避免了隐式的装箱、拆箱,在一定程度上提升了应用程序的性能。通过创建泛型类,可以创建一个在编译时类型安全的集合

拆箱装箱

与我们之前讲解泛型时 所说的一样 这样可以避免很多的“装箱”“拆箱”的操作

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”); 编译时报错,只能将整数类型添加到集合中

总结

其实归根结底 还是将泛型引用到了别的地方 来方便我们更快捷的进行操作 所以大家应该更要清楚泛型的重要性和实用性 避免很多资源的浪费。