도드넷
C# 객체 복사하는 법 - 주소가 아닌 값 복사하기. 본문
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 개꿀!
반응형
'창고 > 게임 개발 [Hidden]' 카테고리의 다른 글
유니티 모바일 로딩시간 - 씬 불러오는 시간 줄이기 (0) | 2019.12.13 |
---|---|
유니티 회전 Rotation 스크립트로 설정하는 법 (0) | 2019.11.17 |
유니티 모든 타입찾기 활성화 + 비활성화 객체 모두찾기! (0) | 2019.07.02 |
[메모2] 유니티 Monobehaviour 저장? 씬 리로드 다시 불러오기 (0) | 2019.06.29 |
[메모] 유니티 Development Build 로 Build And Run하는 방법 (0) | 2019.06.29 |
Comments