Computer >> 컴퓨터 >  >> 프로그램 작성 >> C#

Shallow Copy란 무엇이며 C#의 Deep Copy와 어떻게 다릅니까?

<시간/>

얕은 카피 -

개체의 얕은 복사본은 "주" 개체를 복사하지만 내부 개체는 복사하지 않습니다.

"내부 개체"는 원본 개체와 복사본 간에 공유됩니다.

얕은 복사의 문제는 두 개체가 독립적이지 않다는 것입니다. 한 개체를 수정하면 다른 개체에 변경 사항이 반영됩니다.

딥 카피 -

깊은 복사본은 개체의 완전히 독립적인 복사본입니다. 개체를 복사하면 전체 개체 구조가 복사됩니다.

한 개체를 수정하면 다른 개체에는 변경 사항이 반영되지 않습니다.

예시

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

출력

10 10
5 5
10 10
5 10