c#中的类的实例都是引用类型,用简单的赋值运算符“=”无法创建它的副本,比如:
classa a=new classa();
classa b=a;
a和b指向的是同一块内存。所以与我们的本意不符。我们的本意是想重新开辟内存以保存a的值。这时候可以使用object类的一个protect 方法 MemberwiseClone();由于是保护的方法,所以你要给自己的类创建一个clone方法。如下例:
public class ClassA:Object { public int ab; public ClassA(int a) { ab = a; } public ClassA clone() { return (ClassA)this.MemberwiseClone(); } } private void button1_Click_1(object sender, EventArgs e) { ClassA a=new ClassA(15); ClassA aa = new ClassA(12); a = (ClassA)aa.clone(); aa.ab = 13; MessageBox.Show(a.ab.ToString()); }
结果是 12