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

詳解c# 深克隆與淺克隆

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

前言

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

什么是淺克隆?如何深克隆呢?

正文

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;
}

測(cè)試:

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

這里我們得出了結(jié)果為9;

ok,那么這真的是個(gè)匪夷所思的問(wèn)題,明明兩個(gè)對(duì)象啊。

那么回歸到淺克隆上。

當(dāng)克隆good的時(shí)候是這樣的。

讓good的classone的引用給了新的克隆對(duì)象。

那么如何深克隆呢?

深克隆其實(shí)就是將對(duì)象序列化,也就是說(shuō)要深克隆的話(huà)必須對(duì)象系列化;

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));
	}
}

改變一個(gè)good 類(lèi)。

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;
}

測(cè)試一下:

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

以上就是詳解c# 深克隆與淺克隆的詳細(xì)內(nèi)容,更多關(guān)于c# 深克隆與淺克隆的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • WPF實(shí)現(xiàn)繪制統(tǒng)計(jì)圖(柱狀圖)的方法詳解

    WPF實(shí)現(xiàn)繪制統(tǒng)計(jì)圖(柱狀圖)的方法詳解

    這篇文章主要為大家詳細(xì)介紹了如何基于WPF實(shí)現(xiàn)實(shí)現(xiàn)統(tǒng)計(jì)圖(柱狀圖)的繪制,文中的示例代碼簡(jiǎn)潔易懂,對(duì)我們學(xué)習(xí)WPF有一定幫助,感興趣的可以了解一下
    2022-07-07
  • C#通過(guò)ADO.NET訪(fǎng)問(wèn)數(shù)據(jù)的方法詳解

    C#通過(guò)ADO.NET訪(fǎng)問(wèn)數(shù)據(jù)的方法詳解

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

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

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

    C#中使用HttpDownLoadHelper下載文件實(shí)例

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

    C#從foreach語(yǔ)句中枚舉元素看數(shù)組詳解

    這篇文章主要給大家介紹了關(guān)于C#從foreach語(yǔ)句中枚舉元素看數(shù)組的相關(guān)資料,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-05-05
  • C#Url操作類(lèi)封裝、仿Node.Js中的Url模塊實(shí)例

    C#Url操作類(lèi)封裝、仿Node.Js中的Url模塊實(shí)例

    這篇文章主要介紹了C#Url操作類(lèi)封裝、仿Node.Js中的Url模塊,實(shí)例分析了C#Url操作類(lèi)封裝的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下。
    2016-10-10
  • UnityUI中繪制線(xiàn)狀統(tǒng)計(jì)圖

    UnityUI中繪制線(xiàn)狀統(tǒng)計(jì)圖

    這篇文章介紹了UnityUI中繪制線(xiàn)狀統(tǒng)計(jì)圖的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • C#運(yùn)算符大全_各種運(yùn)算符號(hào)的概述及作用

    C#運(yùn)算符大全_各種運(yùn)算符號(hào)的概述及作用

    以下是對(duì)C#中各種運(yùn)算符號(hào)的說(shuō)明及作用進(jìn)行了詳細(xì)的總結(jié)介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2013-10-10
  • C#打印PDF文檔的10種方法(小結(jié))

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

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

    c# 免費(fèi)組件html轉(zhuǎn)pdf的實(shí)現(xiàn)過(guò)程

    這篇文章主要介紹了c# 免費(fèi)組件html轉(zhuǎn)pdf的實(shí)現(xiàn)過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06

最新評(píng)論

桂阳县| 河南省| 兴国县| 化州市| 兴海县| 大城县| 红原县| 固安县| 无为县| 广水市| 楚雄市| 金溪县| 钦州市| 恭城| 侯马市| 丰县| 自治县| 铁岭县| 理塘县| 渭南市| 高台县| 忻城县| 灌阳县| 贵德县| 顺义区| 昭苏县| 南乐县| 海盐县| 湛江市| 额济纳旗| 安西县| 盈江县| 广饶县| 东莞市| 迭部县| 巴青县| 疏勒县| 罗城| 莫力| 上林县| 格尔木市|