ホームページ  >  記事  >  バックエンド開発  >  C# の浅いコピーとは何ですか?また、C# の深いコピーとの違いは何ですか?

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

王林
王林転載
2023-09-06 19:41:09542ブラウズ

什么是浅复制以及它与 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 までご連絡ください。