C#中深度復制和淺度復制詳解。本站提示廣大學習愛好者:(C#中深度復制和淺度復制詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是C#中深度復制和淺度復制詳解正文
本文章重要是講授C# 說話編程中,深度復制和淺度復制,上面我將經由過程一個實例停止講授。在實例開辟之前,我們得先曉得深度復制是甚麼和淺度復制是甚麼,它們之間的差別又是甚麼,上面將為年夜家逐個揭曉。
1.深度復制是甚麼?
深度復制就是援用類型的復制。
2.淺度復制是甚麼?
淺度復制是值類型的復制。
以下是C#中深度復制和淺度復制的實例代碼援用片斷:
using System;
using System.Collections.Generic;
using System.Text;
namespace Test
{
public class Content
{
public int val;
}
//此處若是深度復制才繼續ICloneable接口
//public class Cloner : ICloneable
public class Cloner
{
public Content MyContent = new Content();
public Cloner(int newVal)
{
MyContent.val = newVal;
}
//淺度復制
//應用System.Object.MemberwiseClone()停止淺度復制,應用getCopy辦法.
public object getCopy()
{
return MemberwiseClone();
}
//深度復制:
public object clone()
{
Cloner clonedCloner = new Cloner(MyContent.val); //此處是實例化一個對象
return clonedCloner;
}
}
}
//主函數
using System;
using System.Collections.Generic;
using System.Text;
namespace Test
{
class Program
{
static void Main(string[] args)
{
Cloner mySource = new Cloner(5);
Cloner myTarget = (Cloner)mySource.getCopy();//深度為cloner
Console.WriteLine("MyTarget.Mycontent.Val={}",myTarget.MyContent.val);
mySource.MyContent.val = 2;
Console.WriteLine("MyTarget.Mycontent.Val={}", myTarget.MyContent.val);
}
}
}
經由過程簡略的實例開辟,年夜家對深度復制和淺度復制是否是有了年夜概的懂得了,今後再有相干的內容引見會在和年夜家分享哦