박싱 Boxing, 언박싱 Unboxing

Gogi·2023년 9월 6일

C# 언어 기초 목록

목록 보기
6/29

박싱 : 값 타입을 참조 타입으로 변환하는 것
언박싱 : 참조 타입을 값 타입으로 변환하는 것

  1. 박싱 (Boxing)

    • 값 형식의 변수가 참조 형식의 객체로 변환되는 과정
    • 이 때, 값 형식의 데이터는 힙에 할당된 새로운 객체 내에 저장
    • 모든 값 형식은 System.Object 클래스에서 직접 또는 간접적으로 파생
      따라서 어떠한 값 형식이든 object 타입의 변수에 저장될 수 있음

    int val = 123; // 값 형식
    object boxed = val; // 박싱

  1. 언박싱 (Unboxing)

    • 박싱된 참조 형식의 객체가 다시 원래의 값 형식으로 변환되는 과정
    • 이 과정에서는 캐스팅이 필요

    int unboxed = (int)boxed; // 언박싱

Q 형 변환과의 차이?

박싱과 언박싱은 특별한 형태의 형 변환임
일반적인 형 변환과는 몇 가지 중요한 차이점이 있음

  1. 메모리 할당:
    박싱이 발생하면, 값 형식의 데이터가 힙에 할당된 새로운 object 객체 내부에 저장.
    따라서 메모리 할당이 관련되어 있음.
    반면에 일반적인 형 변환에서는 새로운 메모리 할당이 필요하지 않음.

  2. 타입 안전:
    언박싱에서는 캐스팅을 사용.
    잘못된 타입으로 언박싱하려고 하면 런타임 예외가 발생.
    일반적인 형 변환에서도 타입 안전은 중요하지만, 언박싱은 특히 주의가 필요.

  3. 성능:
    박싱과 언박싱은 성능에 영향을 줄 수 있음.
    이는 새로운 객체 생성 및 메모리 할당으로 인한 오버헤드 때문.

그러나 결국, 박싱과 언박싱은 특정 조건과 상황에서 값 형식과
참조 형식 간의 형 변환을 나타내므로, 더 넓은 의미에서의 "형 변환"으로 볼 수 있음.

profile
C, C++, C#, Unity

0개의 댓글