c# - 对象分配

标签 c#

我有这样一个场景:

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/

相关文章:

c# - 以编程方式调用并呈现 Powerpoint 演示文稿

C# 网址生成器类

c# - 如何修复 Windows 应用商店应用程序解决方案中丢失的程序集引用 'Microsoft.Xaml.Interactivity.dll'?

c# - 识别这些 "minimum" double 值并将其转换为 C# Double.MinValue 的最佳方法是什么?

c# - XmlNodeConverter 只能转换以对象开头的JSON

c# - 在 System::Collections::Generic::List<T> 类型的列表中列出是可能的吗?

c# - 存储坐标时获取滚动偏移量

c# - 为什么此输出在 C# 和 C++ 中不同?

c# - 单击按钮后无法使用 TAB 访问组框

c# - 在带有键的 ComboBox 中选择 KeyValuePair