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

詳解c# 深克隆與淺克隆

 更新時間:2020年07月09日 14:20:09   作者:團隊buff工具人  
這篇文章主要介紹了c# 深克隆與淺克隆的相關資料,文中示例代碼非常詳細,幫助大家更好的理解和學習,感興趣的朋友可以了解下

前言

我們都知道m(xù)emberwiseclone 會將淺克隆。

什么是淺克?。咳绾紊羁寺∧?#63;

正文

public class good{
  private good(){
    oneclass=new class{
      int id=8;
      string name='id';
    }
  }
  private static good __good;
  private static good __good=new good();
  public good createinstance()
  {
    return __good.memberwiseclone();
  }
  public int a=0;

  public string b="ab";

  pulic class oneclass;
}

測試:

void main()
{
  var student1=good.createinstance();
  var student2=good.createinstance();
  student1.oneclass.id=9;
  console.log('student2 oneclass.id{0}',student2.oneclass.id);
}

這里我們得出了結果為9;

ok,那么這真的是個匪夷所思的問題,明明兩個對象啊。

那么回歸到淺克隆上。

當克隆good的時候是這樣的。

讓good的classone的引用給了新的克隆對象。

那么如何深克隆呢?

深克隆其實就是將對象序列化,也就是說要深克隆的話必須對象系列化;

public class SerializeHelper
{
	public static string Serializable(object target)
	{
		using (MemoryStream steam=new MemoryStream())
		{
			new BinaryFormatter().Serialize(steam,target);
			return Convert.ToBase64String(steam.ToArray());
		}
	}
	public static T Derializable<T>(string target)
	{
		byte[] targetArray = Convert.FromBase64String(target);
		using (MemoryStream steam =new MemoryStream(targetArray))
		{
			return (T)(new BinaryFormatter().Deserialize(steam));
		}
	}
	public static T DeepClone<T>(T t)
	{
		return Derializable<T>(Serializable(t));
	}
}

改變一個good 類。

public class good{
  private good(){
    oneclass=new class{
      int id=8;
      string name='id';
    }
  }
  private static good __good;
  private static good __good=new good();
  public good createinstance()
  {
    return SerializeHelper.DeepClone(__good.memberwiseclone());
  }
  public int a=0;

  public string b="ab";

  pulic class oneclass;
}

測試一下:

void main()
{
  var student1=good.createinstance();
  var student2=good.createinstance();
  student1.oneclass.id=9;
  console.log('student2 oneclass.id{0}',student2.oneclass.id);
}

以上就是詳解c# 深克隆與淺克隆的詳細內容,更多關于c# 深克隆與淺克隆的資料請關注腳本之家其它相關文章!

相關文章

  • WPF實現繪制統計圖(柱狀圖)的方法詳解

    WPF實現繪制統計圖(柱狀圖)的方法詳解

    這篇文章主要為大家詳細介紹了如何基于WPF實現實現統計圖(柱狀圖)的繪制,文中的示例代碼簡潔易懂,對我們學習WPF有一定幫助,感興趣的可以了解一下
    2022-07-07
  • C#通過ADO.NET訪問數據的方法詳解

    C#通過ADO.NET訪問數據的方法詳解

    在 C# 的應用開發(fā)中,數據訪問是極為關鍵的部分,ADO.NET作為.NET 框架下用于數據訪問的核心技術,能夠幫助開發(fā)者便捷地與各類數據源進行交互,本文將深入剖析ADO.NET,帶你掌握使用 C# 通過ADO.NET訪問數據的方法,需要的朋友可以參考下
    2025-02-02
  • C#中Sleep() 和 Wait()的區(qū)別小結

    C#中Sleep() 和 Wait()的區(qū)別小結

    Sleep()和 Wait()是兩個不同的方法,用于控制線程的執(zhí)行,本文主要介紹了C#中Sleep()和Wait()的區(qū)別小結,具有一定的參考價值,感興趣的可以了解一下
    2024-04-04
  • C#中使用HttpDownLoadHelper下載文件實例

    C#中使用HttpDownLoadHelper下載文件實例

    這篇文章主要介紹了C#中使用HttpDownLoadHelper下載文件的方法,并實例講述了在webfrom中與在mvc中的實現方法,需要的朋友可以參考下
    2014-10-10
  • C#從foreach語句中枚舉元素看數組詳解

    C#從foreach語句中枚舉元素看數組詳解

    這篇文章主要給大家介紹了關于C#從foreach語句中枚舉元素看數組的相關資料,文中介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面來一起看看吧。
    2017-05-05
  • C#Url操作類封裝、仿Node.Js中的Url模塊實例

    C#Url操作類封裝、仿Node.Js中的Url模塊實例

    這篇文章主要介紹了C#Url操作類封裝、仿Node.Js中的Url模塊,實例分析了C#Url操作類封裝的技巧,非常具有實用價值,需要的朋友可以參考下。
    2016-10-10
  • UnityUI中繪制線狀統計圖

    UnityUI中繪制線狀統計圖

    這篇文章介紹了UnityUI中繪制線狀統計圖的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • C#運算符大全_各種運算符號的概述及作用

    C#運算符大全_各種運算符號的概述及作用

    以下是對C#中各種運算符號的說明及作用進行了詳細的總結介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2013-10-10
  • C#打印PDF文檔的10種方法(小結)

    C#打印PDF文檔的10種方法(小結)

    這篇文章主要介紹了C#打印PDF文檔的10種方法(小結),可分多種情況來進行,如設置靜默打印、指定打印頁碼范圍和打印紙張大小、雙面打印、黑白打印等等,一共分成10種等,感興趣的可以了解一下
    2019-04-04
  • c# 免費組件html轉pdf的實現過程

    c# 免費組件html轉pdf的實現過程

    這篇文章主要介紹了c# 免費組件html轉pdf的實現過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06

最新評論

共和县| 蓬溪县| 临西县| 鄂州市| 运城市| 大洼县| 开平市| 宁波市| 许昌县| 祁连县| 丽水市| 原平市| 贵州省| 项城市| 孝感市| 平陆县| 岑溪市| 梧州市| 建昌县| 南川市| 浦江县| 江阴市| 丘北县| 溧水县| 平定县| 云阳县| 静安区| 翼城县| 庆云县| 东台市| 永兴县| 临夏市| 江永县| 横山县| 嘉兴市| 金堂县| 西乌| 临桂县| 丰台区| 靖江市| 惠来县|