C# 박싱(Boxing)과 언박싱(Unboxing)

jh.cin·2020년 10월 29일
0

박싱(Boxing)

값 형식을 참조 형식으로 변환하는 것을 박싱(Boxing)

int i=123;
object o=i; // 박싱(묵시적 변환)

스택(Stack)에 있는 데이터가 힙(Heap)으로 복사

언박싱(Unboxing)

참조 형식을 값 형식으로 변환하는 것을 언박싱(Unboxing)

int i=123; //값 형식
object o=i; //박싱
int j=(int) o  //언박싱(묵시적 변환)

힙(Heap)에 있는 데이터가 스택(Stack)으로 복사

박싱과 언박싱 장점

  1. 사용상의 편의성
  2. 대표적으로 System.Collections.ArrayList 클래스가 대표적인 복합자료형
  3. 타입에 관계없이 추가가능 => Add의 메서드가 Object 타입의 매개변수를 취하고 있다

박싱과 언박싱 단점

  1. 박싱할때는 완전히 새로운 개체를 만들며,이러한 작업에는 할당 작업보다 최대 20배의 시간이 걸림
  2. 언박싱할때는 캐스팅 과정에서 할당 작업보다 4배의 시간이 걸림
profile
그냥 프로그래머

0개의 댓글