Record/TIL

[Unity] 박싱(Boxing), 언박싱(UnBoxing)

석영 2024. 8. 21. 22:01
반응형

박싱(Boxing)

값 타입을 참조 타입으로 변경 (암시적)

언박싱(UnBoxing)

참조 타입을 값 타입으로 변경 (명시적)

값 타입

값 타입
  • C#에서 구조체, 열거 타입 등은 값 타입이다.
  • System.ValueType 로부터 항상 상속
  • 스레드 스택에 할당 된다.

 

참조 타입

참조 타입
  • C#에서는 모든 클래스는 참조 타입이 된다.
  • System.Object로부터 상속
  • 힙에 저장이 되며 GC가 관리하게 된다.
    • 이 힙 메모리의 주소를 가리키는 값은 스택에 저장이 된다.

 

특징

박싱과 언박싱은 성능에 무리가 가기때문에 사용하지 않는게 좋다.  박싱, 언박싱 과정을 통해 힙에 가비지가 쌓여 GC에 무리를 줄 수 있기 때문이다. 

또한 잘못된 타입으로 언박싱을 시도 했을때 런타임 오류가 발생할 수 있다.

 

박싱 언박싱을 피하는 방법

  • 제네릭을 사용한다.
  • 기능을 구현할 때 오버로드를 사용해 값과 참조 타입 모두를 처리할 수 있도록 한다.

 

참고

>> Github

 

GameDeveloper-Client-Interview/Unity_C#/박싱, 언박싱.md at main · Romanticism-GameDeveloper/GameDeveloper-Client-Interview

게임 클라이언트 개발자 면접 리스트 정리입니다. Contribute to Romanticism-GameDeveloper/GameDeveloper-Client-Interview development by creating an account on GitHub.

github.com

 

 

>> Boxing, Unboxing

 

[Unity] C# Boxing , unboxing ( 박싱, 언박싱 )

● Boxing, Unboxing 의 정의 ▶ Boxing ( 박싱 ) : 값 형식을 참조 형식으로 변환하는 것을 말한다. boxing은 암시적으로 발생한다. ( 예를 들어 int, float 를 object 로 변환하는 것을 말하는데 이 과정에서 단

everyday-devup.tistory.com

 

 

반응형