Unity开发之C#基础-列表(List)

前言

上一章 我们讲解到了集合(ArrayList)的概念和用法 本篇呢 我们将要讲解的是与集合相似的一个新的语法 叫列表 我们一起看看列表 究竟与集合有什么不同之处呢?
制作不易还请各位一键三连哦!

文章目录

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

列表定义

List定义在using System.Collections.Generic命名空间下,使用时需要对该命名空间进行引用。

List<T> 列表名  = new List<T>();  //其中T代表着列表中的元素类型

我们突然发现 好像这个所谓的列表 和 我们上一章所学习到的集合 没什么区别啊 只是关键字不相同罢了 那具体一点到底有什么区别呢 我们往下来看。

构造函数

List<T>() //初始化List类的新实例,该实例为空并且具有默认初始容量。

List<T>(IEnumerable<T>) //初始化List()类的新实例,该类型包含从指定集合复制的元素

List<T>(Int32) //初始化List类的新实例,该实例为空且具有指定的初始容量。

属性

Count //获取List中包含的元素数量。

常用方法

  1. 添加元素
    Unity开发之C#基础-列表(List)_第1张图片
    2. 插入元素
    Unity开发之C#基础-列表(List)_第2张图片
    3. 移除元素
    Unity开发之C#基础-列表(List)_第3张图片
    4. 元素排序
    Unity开发之C#基础-列表(List)_第4张图片
    5. 包含
    Unity开发之C#基础-列表(List)_第5张图片
    这些 就是列表基本的一些常用的方法 可是我们学会了这么多 那么还是没搞懂究竟他与集合有什么区别 下面请看一图总结:

集合与列表的区别

Unity开发之C#基础-列表(List)_第6张图片
它们之间的对比其实就在于“泛型”这个概念上:

对比

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

拆箱装箱

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

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

总结

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

你可能感兴趣的:(c#,list,开发语言,unity,游戏引擎,游戏程序)