반응형
아래 글은 C# 문법 관련 개념 정리 및 작성자 공부를 위해 작성되었습니다.
📃 참고자료
- https://hongjinhyeon.tistory.com/90
- https://afsdzvcx123.tistory.com/entry/C-%EB%AC%B8%EB%B2%95-%EB%B0%95%EC%8B%B1%EA%B3%BC-%EC%96%B8%EB%B0%95%EC%8B%B1%EC%9D%B4%EB%9E%80
- https://alstn2468.github.io/Javascript/2020-05-08-ValueTypeReferenceType/
* 자세한 내용은 위 링크를 참고바랍니다.
# 박싱(Boxing)
- 값타입 Object 형식 또는 이 값 형식에서 구현된 임의에 인터페이스 형식으로 변환하는 것을 말합니다.
- 기존에 저장된 스택영역에서 힙영역에 값 형식을 저장합니다.
- 값 타입(Value Type)의 객체를 참조 타입(Reference Type)로 변환하는 작업을 말합니다.
int i = 123;
object o = i; // 박싱
Console.WriteLine(o.ToString());
- 단순한 형변환 같지만 값 타입은 스택에 저장되어 있고 참조 타입은 힙에 저장되어 있습니다.
- 그래서 위 과정을 수행하기 위해선 스택에 저장된 값 타입을 힙 타입으로 복사가 한번 일어납니다.
- 그리고 힙에 복사된 이 영역을 참조 타입이 가리키게 되는 일을 수행합니다.
# 언박싱(UnBoxing)
- 참조 타입을 값 타입으로 변환하는 작업을 말합니다.
int i = 123; // a value type
object o = o; // boxing
int j = (int)o; // unboxing
- 박싱과 반대로, 힙에 있던 데이터를 다시 스택으로 복사가 일어납니다.
- 박싱과 언박싱은 System.Object 타입이나 인터페이스 타입이 필요한 부분에 Value 타입의 객체를 적용하기 위해서
필요한 기능이지만, 가능하면 쓰지 않는 것이 좋습니다.
언박싱 과정은 두가지의 절차
- 개체 인스턴스가 값 형식을 boxing한 값인지 확인
- 인스턴스의 값을 값 형식 변수에 복사
반응형
'프로그래밍언어 & 프레임워크 > C#' 카테고리의 다른 글
call by Value와 Call by Reference (0) | 2021.08.06 |
---|---|
[토이프로젝트]UpDown 게임(컴퓨터의 랜덤 숫자 맞추기) (0) | 2021.08.05 |
C# 값 타입과 참조 타입 (0) | 2021.08.03 |
어떻게 XAML과 C#코드가 연결되어 작동하는지 (0) | 2021.07.15 |
XAML 이란? (0) | 2021.07.13 |