我有一个 List<int>
的类(class)成员。如果我想克隆此类的一个实例,我需要深拷贝还是 MemberwiseClone()
浅拷贝就够了吗?
如果至少有一个成员是对对象的引用,我们就需要一个深拷贝,对吧?这是否意味着拥有 List、DateTime、String、MyClass ……需要深拷贝?
最佳答案
这完全取决于您打算如何使用副本。
如果你做一个像这样的浅拷贝
List<int> x = new List<int>() { 1, 2, 3, 4, 5 };
List<int> y = x;
y[2] = 4;
然后 x 将包含 {1, 2, 4, 4, 5 }
如果你对列表进行深拷贝:
List<int> x = new List<int> { 1, 2, 3, 4, 5 };
List<int> y = new List<int>(x);
y[2] = 4;
然后 x 将包含 { 1, 2, 3, 4, 5 } 并且 y 将包含 { 1, 2, 4, 4, 5 }
您计划如何使用副本真正决定了您是使用浅副本还是深副本。
关于C# - 列表成员需要深层复制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2314496/