C#
얕은 복사 / 깊은 복사
가게주인
2022. 6. 15. 11:36
구조체는 기본적으로 값이 복사되는 깊은 복사
int numA = 10;
int numB;
numB = numA;
numB = 50;
Debug.Log(numA);
class는 기본적으로 얕은 복사가 일어나 주소를 참조하기 때문에 원본의 값이 변경됨.
itemB = itemA 를 했을 경우 itemB에는 itemA의 주소가 들어감. 즉 B의 값을 변경하면 A의 값도 변경됨
이걸 원치 않을 땐 얕은 복사 대신 깊은 복사를 사용해야 함.
public Item DeepCopy()
{
Item temp = new Item();
temp.SetItem(name, price);
return temp;
}
새로운 Item인 temp를 만들어주고 그걸 리턴 시킴.
itemB = itemA.DeepCopy();
이러면 새로 생긴 temp의 값이 들어가서 itemB의 값을 바꿔도 itemA는 그대로 출력된다.