값 타입에서 참조타입으로의 변환을 의미한다.
Boxing 과정은 Stack 메모리에 저장되는 값들을 Heap 메모리로 옮긴다.
ex)
int stackValue = 10; object boxedValue = stackValue;* Unboxing
참조타입에서 값 타입으로의 변환을 의미한다.
Unboxing 과정은 Heap 메모리에 저장된 값들을 Stack 메모리로 옮긴다.
ex)
int stackValue = 10; object boxedValue = stackValue;int UnboxedValue = (int) boxedValue;
* 단점
- Boxing이 필요한 곳이 있으나 Performance와 메모리 사용량을 늘리기에 사용을 자제해야 한다.
- Unboxing은 NullReferenceException을 생기게 할 수도 있다.
ex)
int? stackValue = null; object boxedValue = stackValue; int unBoxed = (int)boxedValue;
* 사용이유
현재는 잘 사용하지 않으나 Generic 이전에는 사용하였다.
ex)
ArrayList x = new ArrayList(); x.Add(10); // Boxing int y = (int) x[0];