复制BindingList的最佳方法是什么?
只需使用ForEach()?或者有更好的方法吗?
答案 0 :(得分:3)
BindingList有一个可以接受IList的构造函数。 BindingList实现了IList。所以你可以做到以下几点:
BindingList newBL = new BindingList(oldBL);
当然,这会创建第二个列表,只需指向同一个对象。如果你真的想要克隆列表中的对象,那么你必须做更多的工作。
答案 1 :(得分:2)
Foreach几乎是最简单的方法,如果有的话,性能开销很小。
答案 2 :(得分:1)
来自删除的答案:
序列化对象,然后反序列化 获得深度克隆的非引用 复制
如果OP需要深层复制,那么这是一个有效的选项。
答案 3 :(得分:1)
我们使用Serialize / De-serialize路由获取列表的深层副本。它运行良好,但它确实会降低较大列表中的性能,例如搜索屏幕,因此我不会在包含5000多个项目的列表中使用它。
using System; using System.IO; using System.Runtime.Serialization.Formatters.Binary; namespace ProjectName.LibraryName.Namespace { internal static class ObjectCloner { /// /// Clones an object by using the . /// /// The object to clone. /// /// The object to be cloned must be serializable. /// public static object Clone(object obj) { using (MemoryStream buffer = new MemoryStream()) { BinaryFormatter formatter = new BinaryFormatter(); formatter.Serialize(buffer, obj); buffer.Position = 0; object temp = formatter.Deserialize(buffer); return temp; } } } }