我使用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