本指南探讨了在C#中复制通用列表的不同方法。 由于List<T>
没有内置的Clone()
方法,我们将研究几种策略。
>浅副本的值
对于包含值类型的列表(例如,),简单的浅副本就足够了:
> int
深层复制:使用ICLONABLEdouble
List<YourType> newList = new List<YourType>(oldList);
>接口,则可以使用此方法:
ICloneable
>
List<ICloneable> oldList = new List<ICloneable>(); List<ICloneable> newList = new List<ICloneable>(oldList.Count); oldList.ForEach(item => { newList.Add((ICloneable)item.Clone()); });
最佳实践:工厂方法或复制构造函数
>
ICloneable
为了进行稳健的深层复制,强烈建议使用工厂方法(例如
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)); });
>封装逻辑
>用于改进代码组织并可重复使用,请考虑将这些技术包装到扩展方法或专用的助手功能中。YourType.CopyFrom()
以上是如何在C#中克隆通用列表?的详细内容。更多信息请关注PHP中文网其他相关文章!