我有这样一个场景:
MyClass obj1 = new MyClass();
............//some operations on obj1;
MyClass obj2 = new MyClass();
obj2 = obj1;
我有以下问题:如果我修改任何参数,它在两个对象中都会受到影响(因为它们都引用相同的位置) - 但是,当我修改 obj2 参数时,它不应该修改 obj1 中的参数值(即意味着两者不应指向同一位置)。我怎样才能做到这一点?请帮我。 我不能在这里克隆,因为 myclass 没有实现 ICloneable 并且我不能修改 myclass。 如果我通过序列化和反序列化进行克隆,它会是深度克隆吗?
最佳答案
让你的MyClass
实现ICloneable并使用
MyClass obj1 = new MyClass();
...
MyClass obj2 = obj1.Clone();
如果 MyClass
不可克隆,则需要查找 obj1 中的所有特征值并将它们复制到 obj2,例如
myclass obj2 = new myclass();
obj2.color = obj1.color; // .Clone();
obj2.size = obj1.size;
obj2.numberOfLimbs = obj1.numberOfLimbs;
// etc.
关于c# - 对象分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2486297/