C# 프로그래밍 - 박싱(Boxing)과 언박싱(Unboxing)
- c#
- 2023. 6. 21.
C# 프로그래밍 - 박싱(Boxing)과 언박싱(Unboxing)
박싱(Boxing)과 언박싱(Unboxing)은 값 타입(value type)과 참조 타입(reference type) 간의 변환을 의미합니다.
박싱(Boxing)은 값 타입(int, char, bool, 구조체등)을 객체(참조 타입)로 변환하는 과정입니다. 값 타입은 스택에 저장되고 객체는 힙에 저장되므로 박싱을 통해 값 타입의 데이터를 힙에 저장할 수 있습니다.
사용 예시
int number = 42; // 값 타입
object boxedNumber = number; // 박싱
number라는 int 값은 boxedNumber라는 object 타입으로 박싱됩니다. 이 과정에서 int 값은 객체로 변환되어 힙에 저장됩니다.
언박싱(Unboxing)은 박싱된 객체를 다시 원래의 값 타입으로 변환하는 과정입니다. 언박싱을 수행할 때는 객체가 원래 어떤 값 타입으로 박싱되었는지 알고 있어야 하며 타입 변환이 올바르지 않으면 런타임 오류가 발생합니다.
사용 예시
object boxedNumber = 42; // 박싱된 객체
int unboxedNumber = (int)boxedNumber; // 언박싱
boxedNumber라는 객체를 다시 int 타입으로 언박싱합니다.
박싱의 메모리 할당
박싱은 메모리 할당을 동반하므로 성능에 영향을 미칠 수 있습니다. 값 타입(int, struct등)을 객체(참조 타입)로 변환할 때 해당 값을 힙에 저장하기 위해 새로운 메모리 공간을 할당합니다.
언박싱은 박싱된 객체를 원래의 값 타입으로 변환하는 과정으로 기존에 박싱된 객체를 참조하여 값을 가져오므로 추가적인 메모리 할당이 발생하지 않습니다(원래의 타입으로 변환하기 위해 캐스팅이 필요)
'c#' 카테고리의 다른 글
C# 프로그래밍 - 상수(constant) (0) | 2023.06.22 |
---|---|
C# 프로그래밍 - 연산자(Operator) (0) | 2023.06.22 |
C# 프로그래밍 - 주석(Comment)을 작성하는 방법(한줄주석, 여러줄주석, xml주석) (0) | 2023.06.21 |
C#의 데이터 타입(자료형) 분류 (0) | 2023.06.21 |
C# 프로그래밍 - 클래스(class) (0) | 2023.06.21 |