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

相关文章:

  • 2021-09-10
  • 2022-12-23
  • 2021-10-06
  • 2022-12-23
  • 2022-03-09
  • 2021-06-02
  • 2022-02-25
  • 2022-12-23
猜你喜欢
  • 2021-08-14
  • 2022-12-23
  • 2022-12-23
  • 1970-01-01
  • 2022-02-18
  • 2021-12-12
  • 2021-10-14
相关资源
相似解决方案