我使用this.MemberwiseClone()來創建shallowcopy,但它不工作。請看下面的代碼。.net memberwiseclone淺拷貝不工作
public class Customer
{
public int Id;
public string Name;
public Customer CreateShallowCopy()
{
return (Customer)this.MemberwiseClone();
}
}
class Program
{
static void Main(string[] args)
{
Customer objCustomer = new Customer() { Id = 1, Name = "James"};
Customer objCustomer2 = objCustomer;
Customer objCustomerShallowCopy = objCustomer.CreateShallowCopy();
objCustomer.Name = "Jim";
objCustomer.Id = 2;
}
}
當我運行程序時,它顯示objCustomerShallowCopy.Name爲「詹姆斯」,而不是「吉姆」。
任何想法?
我該如何去改變「objCustomer」屬性(引用類型),以便我可以看到反映在「objCustomerShallowCopy」中的更改? – Subhasis 2010-10-10 16:58:39
在這種情況下,爲什麼首先使用克隆?只需設置objCustomerShallowCopy = objCustomer – 2010-10-10 17:02:12
爲什麼文檔說MemberwiseClone做了淺拷貝,而實際上它沒有做。它正在做一個深層次的複製。 – Subhasis 2010-10-10 17:06:27