c# 中引用对象如何创建副本

    技术2022-05-20  41

    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


    最新回复(0)