欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來到入門教程網(wǎng)!

C#教程

當(dāng)前位置:主頁 > 軟件編程 > C#教程 >

用序列化實現(xiàn)List<T> 實例的深復(fù)制(推薦)

來源:本站原創(chuàng)|時間:2020-01-10|欄目:C#教程|點擊: 次

如果 List<T> 里的 T 是引用類型(如myClass類),則在 像這種寫法:

 List<myClass> lists1 = new List<myClass>()

 {

    new myClass(),

    new myClass()

 };

List<myClass> lists2 = new List<myClass>(lists1 );

其實是一個淺復(fù)制的過程。

如果要實現(xiàn)深復(fù)制,通過有幾種做法,可以用foreach, 或者重寫Clone()方法。

但最好用和最方便的方法還是使用【序列化】的方式來實現(xiàn)。

序列化是指將對象轉(zhuǎn)換為字節(jié)流的形式,然后保存在內(nèi)存或者數(shù)據(jù)庫中。序列化可以保存對象的狀態(tài)信息,當(dāng)需要使用的時候在反序列化回來。所以將對象序列化可以存儲和交換數(shù)據(jù)。例如如果web 服務(wù)發(fā)送,或者在應(yīng)用程序從這個域發(fā)送到另一個域。

若要序列化對象,您需要待序列化的對象、要包含序列化對象的流,以及一個Formatter。序列化包括:二進制序列化和 xml 序列化。

例如,使用 XmlSerializer ,將要拷貝的對象序列化到流中,然后通過反序列化得到新的對象。

  /// <summary>
  /// 序列化類
  /// </summary>
  public class SerializLog
  {
    //1.使用序列化的方式完成 引用對象的 深復(fù)制 是最好的方式
    //2.下面的 Clone方法,我需要使用 泛型對象 做為參數(shù),則在 Clone后面需要帶上<T>的聲明,否則編譯出錯
    
    public static T Clone<T>(T realObject) // T 要序列化的對象
    {
      using (Stream stream = new MemoryStream()) // 初始化一個 流對象
      {
        XmlSerializer serializer = new XmlSerializer(typeof(T)); //將要序列化的對象序列化到xml文檔(Formatter)
        serializer.Serialize(stream, realObject); //將序列后的對象寫入到流中
        stream.Seek(0, SeekOrigin.Begin);     
        return (T)serializer.Deserialize(stream);// 反序列化得到新的對象
      }
    }
  }

以上這篇用序列化實現(xiàn)List 實例的深復(fù)制(推薦)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持我們。

上一篇:C# 獲取IP及判斷IP是否在區(qū)間

欄    目:C#教程

下一篇:C#接口在派生類和外部類中的調(diào)用方法示例

本文標(biāo)題:用序列化實現(xiàn)List&amp;lt;T&amp;gt; 實例的深復(fù)制(推薦)

本文地址:http://mengdiqiu.com.cn/a1/C_jiaocheng/5891.html

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請與我們聯(lián)系,我們將在24小時內(nèi)進行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有