C#类的复制,或者拷贝

1)实现Clone()接口,比较复杂,但是很快。

举例:using   System;  
   
  class   Copy   :   ICloneable  
  {  
      int   m_nValue;  
      public   Copy(int   nValue)  
      {  
  m_nValue   =   nValue;  
      }  
     
      public   object   Clone()  
      {  
            Copy   c   =   new   Copy(this.m_nValue);  
            return   c;  
      }  
   
      public   void   Show()  
      {  
  Console.WriteLine(m_nValue);  
      }  
  }  
   
  class   CopyTest  
  {  
      int   m_nValue;  
      public   CopyTest(int   nValue)  
      {  
  m_nValue   =   nValue;  
      }  
       
      public   CopyTest(CopyTest   ct)  
      {  
  m_nValue   =   ct.m_nValue   ;  
      }  
   
      public   void   Show()  
      {  
  Console.WriteLine(m_nValue);  
      }  
   
      public   static   void   Main()  
      {  
   
  Console.WriteLine("Using   Clone:");  
   
  Copy   c   =   new   Copy(789);  
  c.Show();  
   
  Copy   c2   =   (Copy)c.Clone();  
  c2.Show();  
   
  Console.WriteLine("Using   Copy   constructor:");  
   
  CopyTest   ct   =   new   CopyTest(456);  
  ct.Show();  
   
  CopyTest     ct2   =   new   CopyTest(ct);  
  ct2.Show();  
      }  
  }

2)用序列化,实现简单,但是速度相对慢。

举例: 

 public   static   object   CloneObject(object   obj)  
  {  
      using(MemoryStream   stream   =   new   MemoryStream())  
      {  
          BinaryFormatter   formatter   =   new   BinaryFormatter();  
          stream.Position   =   0;  
          formatter.Serialize(stream,   obj);  
          stream.Position   =   0;  
          return   formatter.Deserialize(stream);  
      }  
  }  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值