隨筆-348  評(píng)論-598  文章-0  trackbacks-0
          Hashtable和ArrayList等經(jīng)常需要深度拷貝,而.Net沒(méi)有現(xiàn)成的函數(shù)可以調(diào)用,我從國(guó)外找了一個(gè)方法
                  public object Clone()
                  {
                      BinaryFormatter Formatter 
          = new BinaryFormatter(nullnew StreamingContext(StreamingContextStates.Clone));
                      MemoryStream stream 
          = new MemoryStream();
                      Formatter.Serialize(stream, 
          this);
                      stream.Position 
          = 0;
                      
          object clonedObj = Formatter.Deserialize(stream);
                      stream.Close();
                      
          return clonedObj; 
                  }
          繼承了Clonable接口之后,像這樣重寫(xiě)Clone()方法就可以了,他利用了序列化和反序列化的原理,將序列化的流丟入內(nèi)存,再?gòu)膬?nèi)存中反序列化回來(lái)就OK了!


          ---------------------------------------------------------
          專注移動(dòng)開(kāi)發(fā)

          Android, Windows Mobile, iPhone, J2ME, BlackBerry, Symbian
          posted on 2008-02-12 23:52 TiGERTiAN 閱讀(2557) 評(píng)論(2)  編輯  收藏 所屬分類: DotNet

          評(píng)論:
          # re: C#深度拷貝(Deep Copy) 2008-10-18 16:42 |
          google 到這,受用了,好東西  回復(fù)  更多評(píng)論
            
          # re: C#深度拷貝(Deep Copy) 2008-10-18 18:27 | TiGERTiAN
          @豬
          呵呵,都是自己人。  回復(fù)  更多評(píng)論
            
          主站蜘蛛池模板: 夏津县| 平陆县| 四子王旗| 呼和浩特市| 江津市| 梅河口市| 色达县| 吴忠市| 原平市| 娱乐| 宝坻区| 延安市| 舟山市| 淮北市| 密云县| 浪卡子县| 苍山县| 孙吴县| 香河县| 仁寿县| 兴国县| 裕民县| 虞城县| 巴里| 苍梧县| 阳曲县| 万州区| 普安县| 襄汾县| 丹寨县| 潞西市| 武威市| 崇文区| 磐安县| 利津县| 沅陵县| 桂东县| 密山市| 阿拉善左旗| 乌拉特前旗| 东兴市|