在C#中创建对象的副本
请看下面的代码(摘自C#书):
public class MyClass { public int val;}public struct myStruct { public int val;}public class Program { private static void Main(string[] args) { MyClass objectA = new MyClass(); MyClass objectB = objectA; objectA.val = 10; objectB.val = 20; myStruct structA = new myStruct(); myStruct structB = structA; structA.val = 30; structB.val = 40; Console.WriteLine("objectA.val = {0}", objectA.val); Console.WriteLine("objectB.val = {0}", objectB.val); Console.WriteLine("structA.val = {0}", structA.val); Console.WriteLine("structB.val = {0}", structB.val); Console.ReadKey(); }}
我知道它会产生以下输出:
objectA.val = 20objectB.val = 20structA.val = 30structB.val = 40
输出的最后两行我没有问题,但前两个告诉我objectA
并objectB
指向相同的内存块(因为在C#中,对象是引用类型)。
问题是make如何制作objectB
,objectA
以便它指向内存中的不同区域。我理解,尝试分配他们的成员可能不起作用,因为这些成员也可能是参考。那么我该如何制作objectB
一个完全不同的实体objectA
呢?
谢谢
牧羊人nacy
慕的地8271018
相关分类