C# 프로그래밍에서는 Boxing과 Unboxing의 개념이 존재합니다. 닷넷 프레임워크에서 모든 타입은 Object 타입을 상속받게 됩니다. Boxing의 경우 값 형식의 데이터를 더 큰 영역인 Object 형식 또는 이 값 형식에서 구현된 임의의 인터페이스 형식으로 변환하는 과정을 의미합니다. 이때 Boxing하게 되는 값은 System.Object 인스턴스 내부에 래핑이 되고 에 저장되어 관리되게 됩니다.

 

int i = 123;
object o = i; // Boxing
int j = (int)o; // unboxing

https://docs.microsoft.com/ko-kr/dotnet/csharp/programming-guide/types/boxing-and-unboxing

 

Unboxing의 과정은 이와 반대로 암시적인 값을 다시 명확하게 Object 형식에서 값 형식으로 변환하는 목적의 과정입니다. 두 과정 모두 상당한 성능 소모가 필요합니다. Boxing의 경우 새로운 개체를 할당하고 생성해야 하며, Unboxing의 경우 캐스트 계산 과정이 필요합니다. 따라서 꼭 필요한 경우를 제외하고는 사용을 자제하는 편이 성능에 좋습니다.

 

 

블로그 이미지

NIA1995

,