本指南探討了在C#中復制通用列表的不同方法。 由於List<T>
沒有內置的Clone()
方法,我們將研究幾種策略。
>淺副本的值
對於包含值類型的列表(例如,),簡單的淺副本就足夠了:
> int
深層複製:使用ICLONABLEdouble
<code class="language-csharp">List<YourType> newList = new List<YourType>(oldList);</code>
>接口,則可以使用此方法:
ICloneable
>
<code class="language-csharp">List<ICloneable> oldList = new List<ICloneable>(); List<ICloneable> newList = new List<ICloneable>(oldList.Count); oldList.ForEach(item => { newList.Add((ICloneable)item.Clone()); });</code>
最佳實踐:工廠方法或複制構造函數
>
ICloneable
為了進行穩健的深層複製,強烈建議使用工廠方法(例如
<code class="language-csharp">List<YourType> oldList = new List<YourType>(); List<YourType> newList = new List<YourType>(oldList.Capacity); // Use Capacity for efficiency oldList.ForEach(item => { newList.Add(new YourType(item)); });</code>
>封裝邏輯
>用於改進代碼組織並可重複使用,請考慮將這些技術包裝到擴展方法或專用的助手功能中。 YourType.CopyFrom()
以上是如何在C#中克隆通用列表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!