Record/TIL
[Unity] 박싱(Boxing), 언박싱(UnBoxing)
석영
2024. 8. 21. 22:01
반응형
박싱(Boxing)
값 타입을 참조 타입으로 변경 (암시적)
언박싱(UnBoxing)
참조 타입을 값 타입으로 변경 (명시적)
값 타입
값 타입
- C#에서 구조체, 열거 타입 등은 값 타입이다.
- System.ValueType 로부터 항상 상속
- 스레드 스택에 할당 된다.
참조 타입
참조 타입
- C#에서는 모든 클래스는 참조 타입이 된다.
- System.Object로부터 상속
- 힙에 저장이 되며 GC가 관리하게 된다.
- 이 힙 메모리의 주소를 가리키는 값은 스택에 저장이 된다.
특징
박싱과 언박싱은 성능에 무리가 가기때문에 사용하지 않는게 좋다. 박싱, 언박싱 과정을 통해 힙에 가비지가 쌓여 GC에 무리를 줄 수 있기 때문이다.
또한 잘못된 타입으로 언박싱을 시도 했을때 런타임 오류가 발생할 수 있다.
박싱 언박싱을 피하는 방법
- 제네릭을 사용한다.
- 기능을 구현할 때 오버로드를 사용해 값과 참조 타입 모두를 처리할 수 있도록 한다.
참고
>> Github
반응형