박싱 : 값 타입을 참조 타입으로 변환하는 것
언박싱 : 참조 타입을 값 타입으로 변환하는 것
박싱 (Boxing)
System.Object 클래스에서 직접 또는 간접적으로 파생object 타입의 변수에 저장될 수 있음int val = 123; // 값 형식
object boxed = val; // 박싱
언박싱 (Unboxing)
int unboxed = (int)boxed; // 언박싱
Q 형 변환과의 차이?
박싱과 언박싱은 특별한 형태의 형 변환임
일반적인 형 변환과는 몇 가지 중요한 차이점이 있음
메모리 할당:
박싱이 발생하면, 값 형식의 데이터가 힙에 할당된 새로운 object 객체 내부에 저장.
따라서 메모리 할당이 관련되어 있음.
반면에 일반적인 형 변환에서는 새로운 메모리 할당이 필요하지 않음.
타입 안전:
언박싱에서는 캐스팅을 사용.
잘못된 타입으로 언박싱하려고 하면 런타임 예외가 발생.
일반적인 형 변환에서도 타입 안전은 중요하지만, 언박싱은 특히 주의가 필요.
성능:
박싱과 언박싱은 성능에 영향을 줄 수 있음.
이는 새로운 객체 생성 및 메모리 할당으로 인한 오버헤드 때문.
그러나 결국, 박싱과 언박싱은 특정 조건과 상황에서 값 형식과
참조 형식 간의 형 변환을 나타내므로, 더 넓은 의미에서의 "형 변환"으로 볼 수 있음.