在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
随时随地看视频慕课网APP
相关分类