1. 박싱(Boxing)이란?
값 형식을 참조 형식으로 변환하는 과정을 뜻한다.
이때 값 형식과 참조 형식이 무엇을 의미하는지는 아래의 표와 같다
- 값 형식과 참조 형식
값 형식 | 참조형식 | |
특징 |
|
|
대표적인 형식 |
|
|
- 예시 코드
int num = 123;
object obj = num;
위의 코드와 같이 값 형식으로 정의한 num을 참조 형식으로 변환하는 과정은 박싱이라고 한다.
참조 형식으로 변환활 때 num의 값을 복사하여 힙에 저장하고 obj는 그 힙의 주소를 참조한다.
2. 언박싱(Unboxing)이란?
박싱된 객체를 다시 원래의 값 형식으로 변환하는 과정이다.
- 예시 코드
object obj = 123;
int num = (int)obj;
언박싱할 때는 명시적 형변환이 필요하기 때문에 위의 코드와 같이 (int)obj;를 하여 형변환 해준다. ( 힙에서 값을 꺼내 스택에 복사 )
3. 박싱과 언박싱의 장단점
- 장점
- 다양한 형식을 하나의 구조로 처리 가능하다.
- 값 형식도 참조 형식처럼 다룰 수 있어 인터페이스나 공통 메서드 호출이 가능하다
- 단점
- 박싱 시 힙에 객체가 생성되거나 언박싱 시 캐스팅 및 복사가 발생하여 성능 저하의 원인이 된다.
- 박싱된 값은 힙에 할당되어 가비지 컬렉션 대상이 된다.
'C#' 카테고리의 다른 글
[TIL] C# 가비지 컬렉터(Garbage Collector) (0) | 2025.05.12 |
---|---|
[TIL] C# 다이아몬드 문제와 해결법 (1) | 2025.05.07 |
[TIL] 직렬화 (Serialization) (1) | 2025.03.11 |
[TIL] C#의 반복자 인터페이스 (0) | 2025.03.10 |
[TIL] C# 싱글톤 패턴 (0) | 2025.03.06 |