C# 中对象间都是以引用形式存在的,所以传统的用=赋值,只是给新对象赋值了对象地址,并未创建新的对象。
例如:
public class A { public int id { get; set; } public string name { get; set; } } 实例化一个类A, A a=new A(); a.id=1; a.name="test";
接着,用a来实例化B, A b=a;此时,如果对B进行操作,则a的值也会相应的发生改变。因为b保存的是a在内存上的地址。并没有保存具体的对象。
这时候可以使用MemberwiseClone()方法;该方法是object类的一个protect 方法 由于是保护的方法,所以你要给自己的类创建一个clone方法。如下:
public class A { public int id { get; set; } public string name { get; set; } public A Clone() { return (A)this.MemberwiseClone(); } }
此时 我们可以用 A c=a.Clone();此时对c进行操作的话,则a内的值不会受到影像。