我试图搜索我的答案,发现它们是关于 C 而不是 C#,所以想到发布它。
我的问题在这里可能是微不足道的。
根据我的理解(简单来说)
复制完成后
浅拷贝 -> 主对象和拷贝对象(引用或值类型)应该指向内存中的同一个对象
DeepCopy -> 主对象和复制对象(引用或值类型)应该指向内存中的不同对象
继续进行此操作,我在 C# 中有一个结构,并尝试对其进行浅拷贝。我尝试使用“MemberwiseClone”方法,但我猜它只适用于引用类型。对于值类型,我认为“MemberwiseClone”方法会将其装箱到一个对象中,然后将其拆箱到堆栈中的不同内存地址中。
我尝试过的如下。
我的问题是如何(如果可能的话)创建一个简单结构的浅表副本?
我希望我的基本原理在这里是正确的,而不是胡说八道。如果我在我所做的任何陈述中有错误,请纠正我。
问候,
萨马尔
struct MyStruct : ICloneable
{
public int MyProperty { get; set; }
public object Clone()
{
return this.MemberwiseClone();//boxing into object
}
}
private void btnChkStr_Click(object sender, EventArgs e)
{
MyStruct struct1 = new MyStruct();
struct1.MyProperty = 1;
//MyStruct struct2 = struct1; //This will create a deep copy
MyStruct struct2 = (MyStruct)(struct1.Clone());//unboxing into structure hence allocating a different memory address
struct2.MyProperty = 2;
MessageBox.Show(struct1.MyProperty.ToString()); //still showing 1
}