
object형은 기본적으로 상속받는 최상위 클래스이다.
BOXING
int a = 123;
Object o = a; // 이 경우 a는 값타입인데 참조타입인 o에 넣으려 한다.
묵시적으로 형변환이 이루어지는데 이렇게 하는 것을 박싱이라고 한다.
값타입을 참조타입으로 변환하는 방법이 boxing이다.
값타입 변수를 객체화 하기 위한 메모리를 힙영역에 생성하고( 이공간이 box이다.)
a에 있는 값을 힙에 생성한 box로 복사한 후
참조타입 변수 o에 box의 참조 값을 할당한다.
UNBOXING
반대로
참조타입을 값타입으로 변환하는 방법이 unboxing이다.
unboxing은 명시적인 형변환을 필요로 한다.
변환 순서. 객체가 지정한 값타입을 BOXING한 값인지 확인을 한후
BOXING이 된 객체라면 객체의 값을 값타입 변수에 복사한다.
BOXING한 메모리와 UNBOXING 한 메모리 두개가 존재한다.
BOXING
int a = 123;
Object o = a; // 여기 까지 박싱
int j = (int)o; // 명시적으로 캐스팅하여 unboxing
'C# > C# Concept' 카테고리의 다른 글
[C#] 문자열 함수2 (0) | 2018.05.17 |
---|---|
[C#] Upcasting ,virtual, override (0) | 2018.05.03 |
[C#] override new (0) | 2018.05.03 |
[C#] 연산자 오버로딩 (0) | 2018.05.02 |
[C#] 예외 (0) | 2018.05.01 |