관리 메뉴

도드넷

C# 객체 복사하는 법 - 주소가 아닌 값 복사하기. 본문

창고/게임 개발 [Hidden]

C# 객체 복사하는 법 - 주소가 아닌 값 복사하기.

도드! 2019. 11. 7. 09:46



C# 객체 복사하는 법


주소가 아닌 값 복사 하기. 진짜 객체 복사!



예를 들어보자. (뜬금)


인간이라는 객체가 있다고 하자.


인간 A;

인간 B;

인간 C;


인간A을 인간B으로 만들고 싶을때


A = B;


하면 B의 모든 값이 A로 복사되긴 한다.


그런데 큰 문제가 생긴다.




만약 인간A의 키를 175cm으로 설정하면


인간B의 키 또한 175cm가 된다.




만약 인간A를 인간C로 만들고 싶어서


A = C;


를 시전하면,


인간A가 인간C가 되지만


동시에 


인간B 또한 인간C가 되버린다.





WHAT THE FUCK ?



그 이유는 객체를 "=" 연산자로 계산할 경우.

복사가 아니라 참조가 일어나기 때문이다.


DAMN!





C# 객체 복사하는 법 참조 문제 솔루션 : 



MemberwiseClone 이라는 메소드를 사용하면 된다.


인간이라는 객체의 정의에 위와 같은 ShallowCopy() 메소드를 추가하고.


인간A = 인간B;


가 아닌


인간A = 인간B.MemberwiseClone();


을 호출하면 참조 복사가 아닌 

값 복사로 객체를 복사할 수 있다.



:3 개꿀!






반응형
Comments