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)