C#

C# Object 자료형, 박싱과 언박싱

KJaebee 2022. 4. 27. 02:30

이 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