이 object 자료형은 C++에 auto와 비슷한 역할
이 object는 어떠한 자료형이 될 수 있다.
이 원리는 상속을 이용
C#에서는 object가 모든 데이터 형식을 다룰 수 있도록
모든 데이터 형식의 최상위 계층을 object로 지정했으며 자동으로 object형식에서 상속받게 했음
따라서 어떤 형식의 데이터라도 object로 처리가 가능함
object a_bool = true;
object b_int = 1;
object c_float = 1.1f;
object d_char = 'a';
object f_string = "hellow world";
박싱과 언박싱
이 object의 메커니즘은 박싱관 언박싱의 원리를 이용
여기서 문제 일반적인 변수는 값 형식이라서 스택에 들어감.
하지만 object는 참조 형식이라서 힙을 사용
하지만 참조 형식에 값 형식을 담는것은 형변환과 비슷한 방식이다.
int형을 float형으로 바꾸는것.
int a = 10;
float b = (float)a;
그럼 박싱과 언박싱이란?
박싱은 스택에 있는 참조 값을 힙에 넣는 것이고
언박싱은 힙에 참조된 메모리 공간에서 값을 꺼내 다시 스택에 넣어주는 것이다
쉽게 생각해서 object형변환을 사용하는 행위가 박싱
박싱된 object형변환을 값 형식으로 형변환을 하는 행위가 언박싱이라고 생각하면 됨
int a = 1;
object box = (object)a; // 박싱
int b = (int)box //언박싱
'C#' 카테고리의 다른 글
C# 메소드 (0) | 2022.04.29 |
---|---|
C# 문자열 보간, 서식, 분할, 변형, 찾기 (0) | 2022.04.27 |
C# 형변환 (0) | 2022.04.27 |
C# 상수와 열거형 (0) | 2022.04.27 |
C# Nullable, Var (0) | 2022.04.26 |