[C#공부] Boxing & Unboxing
2018. 1. 6. 16:12
# Boxing이란?
Boxing은 value type의 값을 object type으로 변환하는 것을 말한다.
닷넷 프레임워크에서 모든 타입은 object type의 상속을 받는다.
그래서 value type의 값을 좀 더 큰 영역으로 포장한다고 하여 Boxing이라고 한다.
* int type의 값을 Boxing한 코드이다.
# Unboxing이란?
Boxing의 반대로 object type의 변수가 가지고 있는 값을 value type으로 변환하는 것을 말한다.
* 여기서 주목할 것은 boxing에서 암시적 타입변환, unboxing에서 명시적 타입변환을 사용한다는 것이다.
이유는 앞서 말했듯이, object type이 모든 타입을 상속하기 때문이다.
위의 내용을 메모리 영역에서 보면 아래와 같다.
# 그렇다면 Boxing, Unboxing은 언제 사용하는가?
다음은 박싱과 언박싱을 사용하는 예제이다.
* 'first group', 'second group'이라는 string value와 1~9까지의 int value가 object타입인 ArrayList 컬렉션에 박싱되었다.
그리고 합계인 Sum 값의 연산을 위해 언박싱하였다.
이처럼 어떠한 타입의 값을 저장하게 될지 명확하지 않을 때, 혹은 여러 타입의 값을 담고자 할 때 Boxing을 사용할 수 있다.
* MSDN에서는 많은 수의 박싱이 요구될 경우, 성능저하의 우려가 있으므로 가급적이면 value type을 사용하지 않고 제네릭을 사용할 것을 권고한다.
'Programming > C#' 카테고리의 다른 글
[C#공부] 배열/Collection을 이용한 foreach문 사용 (0) | 2018.01.06 |
---|---|
[C#공부] as와 is 연산자 (0) | 2018.01.06 |
[C#공부] 캐스팅 및 타입 변환 (0) | 2018.01.06 |
[C#공부] C#과 닷넷 프레임워크의 개념 (0) | 2018.01.06 |
[개발환경 구축] Visual Studio 2017 Community 설치하기 (0) | 2018.01.06 |