C# List 赋值(二) --复制 和 new 构造函数
List<T> 类型的赋值有两种结果:
1、变量赋值,因为变量中存储的是内存的地址,对变量赋值后,实际修改了变量中内存地址,即引用改变了,此时的变量指向其他的对象实例
2、对象赋值,变量中的内存地址不变,内存中数据修改,即引用不变,指向的对象实例的内容修改
我们在实际项目中往往是需要后者的效果,特别是新建一个List<T>变量时,不能修改原值,而是复制原值后,对复制的数据进行逻辑处理
之前有学习到其他博文中List<T>复制的方法,我首选了new(List<T>)的方法,所以记录一下new创建对象和调用List构造函数
一、List<T>构造函数
1、List<T>()
初始化新实例,该实例为空并且具有默认初始容量(0)。
2、List<T>(IEnumerable<T>)
初始化新实例,该实例包含从指定集合复制的元素并且具有足够的容量来容纳所复制的元素。
3、List<T>(Int32)
初始化新实例,该实例为空并且具有指定的初始容量。
二、List<T>属性
1、Capacity
获取或设置该内部数据结构在不调整大小的情况下能够容纳的元素总数。
2、Count
获取 List<T> 中实际包含的元素数。
三、List<T>方法
通过查看所有方法,找到还可以实现List<T>复制的方法:
1、AddRange 将指定集合的元素添加到 List<T> 的末尾。
public void AddRange(IEnumerable<T> collection)
可以调用Clear方法清除所有元素,然后AddRange,进行复制
2、CopyTo(T[]) 将整个 List<T> 复制到兼容的一维数组中,从目标数组的开头开始放置。
public void CopyTo(T[] array)