# object 형식
NET Framework의 최상위 기본 형식입니다. 모든 다른 형식은 object 형식으로 암시적으로 형변환될 수 있습니다. object 형식은 참조 형식이므로, 힙에 데이터를 저장하고 스택에는 해당 데이터에 대한 참조를 저장합니다. object 형식은 다양한 형식의 값을 포함할 수 있는 상위 형식이므로, 다형성을 구현하고 범용적인 데이터 저장과 전달을 가능하게 합니다.
박싱(Boxing)과 언박싱(Unboxing)은 값 형식과 object 형식 사이에서 데이터를 변환하는 프로세스입니다.
박싱(Boxing):
- 박싱은 값 형식을 object 형식으로 변환하는 과정입니다.
- 값 형식의 데이터가 힙에 새로운 메모리 영역에 할당되고, 해당 메모리 영역의 주소가 object 형식의 참조로 스택에 저장됩니다.
- 박싱은 데이터를 힙에 할당하기 때문에 메모리 오버헤드가 발생하며, 성능 저하를 야기할 수 있습니다.
- 박싱된 값 형식은 object 형식으로 사용되지만, 값을 변경하려면 언박싱을 통해 다시 원래 값 형식으로 변환해야 합니다.
언박싱(Unboxing):
- 언박싱은 object 형식의 데이터를 값 형식으로 변환하는 과정입니다.
- object 형식의 데이터가 힙에 저장된 값을 가리키는 참조이므로, 해당 값을 스택에서 가져와 값을 복사하거나 참조를 변경하여 값 형식으로 변환합니다.
- 언박싱은 박싱된 데이터를 다시 원래 값 형식으로 되돌리는 과정입니다.
- 박싱된 값을 언박싱할 때, 데이터의 형식이 실제 값 형식과 일치하지 않으면 런타임 오류가 발생할 수 있습니다.
박싱과 언박싱은 값 형식과 object 형식 간의 형변환을 가능하게 해주지만, 런타임 오버헤드와 성능 저하를 유발할 수 있습니다. 따라서, 값 형식을 object 형식으로 변환할 필요가 없는 경우에는 박싱과 언박싱을 최소화하여 성능 향상을 추구하는 것이 권장됩니다.
'Programming > C# - Window' 카테고리의 다른 글
C#/ Nullable타입 (0) | 2023.06.27 |
---|---|
C#/ 상수(const)와 열거(enum) 형식 (0) | 2023.06.27 |
C#/ 숫자 - 문자열 사이 타입 변환(type casting) (0) | 2023.06.27 |
C#/ CLR, IL, JIT 컴파일 (0) | 2023.06.27 |
C# / .NET(닷넷) 플랫폼 (0) | 2023.06.27 |