最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#中4種深拷貝方法介紹

 更新時(shí)間:2015年06月17日 10:10:46   投稿:junjie  
這篇文章主要介紹了C#中4種深拷貝方法介紹,本文講解了利用反射實(shí)現(xiàn)、利用xml序列化和反序列化實(shí)現(xiàn)、利用二進(jìn)制序列化和反序列化實(shí)現(xiàn)、利用silverlight DataContractSerializer實(shí)現(xiàn),用于在silverlight 客戶端使用等4種方法,需要的朋友可以參考下

1:利用反射實(shí)現(xiàn)

public static T DeepCopy<T>(T obj)
{
  //如果是字符串或值類型則直接返回
  if (obj is string || obj.GetType().IsValueType) return obj;

  object retval = Activator.CreateInstance(obj.GetType());
  FieldInfo[] fields = obj.GetType().GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static);
  foreach (FieldInfo field in fields)
  {
    try { field.SetValue(retval, DeepCopy(field.GetValue(obj))); }
    catch { }
  }
  return (T)retval;
}

2:利用xml序列化和反序列化實(shí)現(xiàn)

public T DeepCopy<T>(T obj)
    {
      object retval;
      using (MemoryStream ms = new MemoryStream())
      {
        XmlSerializer xml = new XmlSerializer(typeof(T));
        xml.Serialize(ms, obj);
        ms.Seek(0, SeekOrigin.Begin);
        retval = xml.Deserialize(ms);
        ms.Close();
      }
      return (T)retval;
    }

3:利用二進(jìn)制序列化和反序列化實(shí)現(xiàn)

public static T DeepCopy<T>(T obj)
{
  object retval;
  using (MemoryStream ms = new MemoryStream())
  {
    BinaryFormatter bf = new BinaryFormatter();
    //序列化成流
    bf.Serialize(ms, obj);
    ms.Seek(0, SeekOrigin.Begin);
    //反序列化成對(duì)象
    retval = bf.Deserialize(ms);
    ms.Close();
  }
  return (T)retval;
}

4:利用silverlight DataContractSerializer實(shí)現(xiàn),用于在silverlight 客戶端使用

public static T DeepCopy<T>(T obj)
    {
      object retval;
      using (MemoryStream ms = new MemoryStream())
      {
        DataContractSerializer ser = new DataContractSerializer(typeof(T));
        ser.WriteObject(ms, obj);
        ms.Seek(0, SeekOrigin.Begin);
        retval = ser.ReadObject(ms);
        ms.Close();
      }
      return (T)retval;

補(bǔ)充:第一個(gè)已經(jīng)通過遞歸實(shí)現(xiàn)了深拷貝。

相關(guān)文章

  • c#實(shí)現(xiàn)幾種數(shù)據(jù)庫的大數(shù)據(jù)批量插入

    c#實(shí)現(xiàn)幾種數(shù)據(jù)庫的大數(shù)據(jù)批量插入

    這篇文章主要介紹了c#實(shí)現(xiàn)幾種數(shù)據(jù)庫的大數(shù)據(jù)批量插入,主要包括SqlServer、Oracle、SQLite和MySQL,有興趣的可以了解一下。
    2017-01-01
  • C#實(shí)現(xiàn)上位機(jī)的遠(yuǎn)程監(jiān)控與控制的詳細(xì)步驟

    C#實(shí)現(xiàn)上位機(jī)的遠(yuǎn)程監(jiān)控與控制的詳細(xì)步驟

    隨著工業(yè)自動(dòng)化、物聯(lián)網(wǎng)以及智能控制系統(tǒng)的普及,遠(yuǎn)程監(jiān)控與控制逐漸成為了許多系統(tǒng)的核心需求,上位機(jī)作為控制與監(jiān)測(cè)系統(tǒng)的核心,常用于接收處理來自下位機(jī)的數(shù)據(jù)并進(jìn)行控制操作,C#作為一門高效且功能強(qiáng)大的編程語言,本文將探討如何使用C#實(shí)現(xiàn)上位機(jī)遠(yuǎn)程監(jiān)控與控制
    2025-01-01
  • 利用C#9.0新語法如何提升if語句美感

    利用C#9.0新語法如何提升if語句美感

    這篇文章主要給大家介紹了關(guān)于利用C# 9.0新語法如何提升if語句美感的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • C#獲取數(shù)組中最大最小值的方法

    C#獲取數(shù)組中最大最小值的方法

    這篇文章主要介紹了C#獲取數(shù)組中最大最小值的方法,本文直接給出實(shí)例代碼,需要的朋友可以參考下
    2015-06-06
  • 利用C#代碼將html樣式文件與Word文檔互換的方法

    利用C#代碼將html樣式文件與Word文檔互換的方法

    這篇文章主要給大家介紹了關(guān)于利用C#代碼將html樣式文件與Word文檔互換的方法,文中通過示例代碼將兩種轉(zhuǎn)換介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-11-11
  • C# IP地址與整數(shù)之間轉(zhuǎn)換的具體方法

    C# IP地址與整數(shù)之間轉(zhuǎn)換的具體方法

    這篇文章介紹了C# IP地址與整數(shù)之間轉(zhuǎn)換的具體方法,有需要的朋友可以參考一下
    2013-10-10
  • npoi2.0將datatable對(duì)象轉(zhuǎn)換為excel2007示例

    npoi2.0將datatable對(duì)象轉(zhuǎn)換為excel2007示例

    這篇文章主要介紹了npoi2.0將datatable對(duì)象轉(zhuǎn)換為excel2007示例的相關(guān)資料
    2014-04-04
  • c# 爬取優(yōu)酷電影信息(1)

    c# 爬取優(yōu)酷電影信息(1)

    這篇文章主要介紹了c# 如何爬取優(yōu)酷電影信息,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-02-02
  • C#字節(jié)數(shù)組(byte[])和字符串相互轉(zhuǎn)換方式

    C#字節(jié)數(shù)組(byte[])和字符串相互轉(zhuǎn)換方式

    這篇文章主要介紹了C#字節(jié)數(shù)組(byte[])和字符串相互轉(zhuǎn)換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • 淺談C#六大設(shè)計(jì)原則

    淺談C#六大設(shè)計(jì)原則

    這篇文章主要介紹了C#六大設(shè)計(jì)原則的相關(guān)內(nèi)容,文中代碼非常細(xì)致,供大家參考和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06

最新評(píng)論

化隆| 麟游县| 满城县| 江西省| 萝北县| 九龙坡区| 南城县| 庄河市| 桂阳县| 台中市| 濮阳县| 浦县| 双江| 普陀区| 绍兴市| 黔西| 商洛市| 抚松县| 康平县| 游戏| 大竹县| 宝丰县| 车致| 伽师县| 灵山县| 东平县| 华坪县| 静宁县| 张家港市| 徐水县| 临朐县| 荔浦县| 博罗县| 名山县| 修文县| 巴中市| 甘孜县| 雷波县| 昂仁县| 台湾省| 通城县|