如果有一个
struct A {
public double[] Data;
public int X;
}
在使用 operator=
或将 A
的实例添加到容器时,如何强制进行深度复制?
问题例如:
A a = new A();
var list = new List<A>();
list.Add(a); // does not make a deep copy of Data
A b = a; // does not make a deep copy of Data
我真的必须实现自己的 DeepClone
方法并每次都调用它吗?这将非常容易出错......
最佳答案
一般来说,您应该避免将可变引用类型(如 Array)放入结构中。参见 this question 并回答。
所以让你的类成为一个引用类型,并给它一个 DeepCopy 方法。或者甚至更好 - 让您的类型不可变,这样您就不需要制作副本。
关于c# - 使用数组复制结构时如何强制进行深度复制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2706176/