我創建了一個類我無法弄清楚克隆在C#
class MyClass:ICloneable
{
public int val;
public List<int> list;
public MyClass()
{
list = new List<int>();
}
public object Clone()
{
return this.MemberwiseClone();
}
}
和我運行下面的類
class ProgramTest
{
static void Main(string[] args)
{
MyClass objectA = new MyClass();
objectA.list.Add(1);
MyClass objectB = (MyClass)objectA.Clone();
objectA.val = 10;
objectB.val = 20;
objectB.list[0] = 20;
Console.WriteLine("objectA.val = {0}", objectA.val);
Console.WriteLine("objectA.list[0] = {0}", objectA.list[0]);
Console.WriteLine("objectB.val = {0}", objectB.val);
Console.WriteLine("objectB.list[0] = {0}", objectB.list[0]);
Console.ReadKey();
}
}
輸出:
objectA.val = 10;
objectA.list[0] = 20;
objectB.val = 20;
objectB.list[0] = 20;
我的問題是: 我已經克隆了objectA
到objectB
,值類型(val
)輸出如預期objectA
有10和objectB
有20.
但是對於引用類型如列表輸出不符合預期。我越來越objectA.list[0]
20和objectB.list[0]
爲20。我期待objectA.list[0]
爲1和objectB.list[0]
爲20
有人可以請解釋爲什麼克隆沒有與名單的工作?
謝謝。現在我知道爲什麼克隆參考不起作用。 –