Dev*_*per 14 .net c# generics generic-list
可能重复:
如何在C#中克隆通用列表?
List<MyObject> a1 = new List<MyObject>();
var new1 = a1;
Run Code Online (Sandbox Code Playgroud)
现在,如果我改变,a1
那么new1
也将改变.
所以我的问题是如何正确克隆a1?
aqw*_*ert 34
这不会Clone
列表中的每个项目,但会创建一个新列表
var new1 = new List<MyObject>(a1);
Run Code Online (Sandbox Code Playgroud)
如果要克隆每个项目的列表,你可以实现ICloneable
在MyObject
var new1 = new List<MyObject>(a1.Select(x => x.Clone()));
Run Code Online (Sandbox Code Playgroud)
编辑:为了使它更清楚,两者都会将列表中的元素复制a1
到新列表中.您只需要决定是否要有新MyObject
的或保留原件.如果你想要克隆,MyObject
你将需要一种克隆它们的方法,这通常是通过ICloneable
.