객체 복사하기 - 얕은 복사, 깊은 복사, 얕은 복사 vs 깊은 복사

CODEDRAGON Development/C#, Xamarin

반응형


 

 

객체 복사하기

객체를 복사하는 방법에는 얕은 복사와 깊은 복사가 있습니다.


 

 

얕은 복사

static void Main(string[] args)

{

    //참조값만 복사

    MyClass source = new MyClass();

 

     //객체의 얕은 복수

    MyClass target = source; 

}

 

 

 

깊은 복사

static void Main(string[] args)

{

    //원본 객체와 별도의 객체를 할당

     MyClass source = new MyClass();

 

     //객체의 깊은 복수

     MyClass target = source.DeepCopy();         

}

class MyClass

{

    public int member_filed1;

    public int member_filed2;

 

    //깊은 복사를 수행하는 코드를 직접 작성

    public MyClass DeepCopy()

    {

        MyClass deepCopyClass = new MyClass();

       deepCopyClass.member_filed1 = this.member_filed1;

       deepCopyClass.member_filed2 = this.member_filed2;

 

        return deepCopyClass;

    }

}

 

 

 

얕은 복사 vs 깊은 복사

얕은 복사

(Shallow Copy)

·         참조값만 복사

·         동일한 객체를 가리킴

깊은 복사

(Deep Copy)

·         객체 복사

·         원본 객체와 별도의 객체를 할당(서로 다른 객체를 가리킴)

 

객체 생성


 

얕은 복사

(Shallow Copy)


 

깊은 복사

(Deep Copy)