본문 바로가기

[ programing ]/C#

shallow Copy[얕은 복사]

class MeClass

{

   public int MyFiend1;

  public int MyFiend2;

}



MeClass source = new MeClass();

source.MyFeild1=10;

source.MyFeild2=20;


print(source .MyFeild1, target.MyFeild2);


// 10, 20





MeClass target = source;


 ( soruce값을 복사 받은 target에 새로운 값을 입력해 줍니다.)


target.MyFeild2 = 30;




print(target .MyFeild1, target .MyFeild2);

print(source .MyFeild1, source .MyFeild2);



// 10, 30

// 10, 30


source.MyFeild2 의 값이 20에서 30으로 나옴..




클래스는 태생이 참조형식이기 때문에 

힙영역에 객체를 할당하고 

스택에 있는 참조(주소)가 할당된 메모리를 가르킵니다. 





source를 복사받은 target은 힙에 있는 실제 객체가 아닌 

스택에 있는 참조를 복사 받습니다.

참조만 살짝 복사 하는 것을 얕은 복사라고 합니다.