ホームページ > バックエンド開発 > C#.Net チュートリアル > C# の浅いコピーとは何ですか?また、C# の深いコピーとの違いは何ですか?

C# の浅いコピーとは何ですか?また、C# の深いコピーとの違いは何ですか?

王林
リリース: 2023-09-06 19:41:09
転載
612 人が閲覧しました

什么是浅复制以及它与 C# 中的深复制有何不同?

浅いコピー -

浅いコピーとは、オブジェクトの「メイン」部分をコピーすることを指しますが、内部部分はコピーしません オブジェクト。

「内部オブジェクト」は、元のオブジェクトとそのコピーの間で共有されます。

浅いコピーの問題は、2 つのオブジェクトが独立していないことです。 1 つのオブジェクトを変更すると、その変更がもう 1 つのオブジェクトに反映されます。

ディープ コピー

ディープ コピーは、オブジェクトの完全に独立したコピーです。オブジェクトをコピーすると、 オブジェクト構造全体をコピーします。

一方のオブジェクトを変更すると、その変更はもう一方のオブジェクトには反映されません。

Example

class Program{
   static void Main(string[] args){
      //Shallow Copy
      ShallowCopy obj = new ShallowCopy();
      obj.a = 10;
      ShallowCopy obj1 = new ShallowCopy();
      obj1 = obj;
      Console.WriteLine("{0} {1}", obj1.a, obj.a); // 10,10
      obj1.a = 5;
      Console.WriteLine("{0} {1}", obj1.a, obj.a); //5,5
      //Deep Copy
      DeepCopy d = new DeepCopy();
      d.a = 10;
      DeepCopy d1 = new DeepCopy();
      d1.a = d.a;
      Console.WriteLine("{0} {1}", d1.a, d.a); // 10,10
      d1.a = 5;
      Console.WriteLine("{0} {1}", d1.a, d.a); //5,10
      Console.ReadLine();
   }
}
class ShallowCopy{
   public int a = 10;
}
class DeepCopy{
   public int a = 10;
}
ログイン後にコピー

Output

10 10
5 5
10 10
5 10
ログイン後にコピー

以上がC# の浅いコピーとは何ですか?また、C# の深いコピーとの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:tutorialspoint.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート