본문 바로가기

Programming/C#

C# 데이터 형식 - Object & 박싱, 언박싱

반응형

C# 데이터 형식 중 Object 형이 있습니다. 이번에는 이 Object 형이 어떤 것인지 알아보고 앞에서 설명했듯이 어떻게 모든 데이터 형식을 담을 수 있는지 알아보겠습니다.

 

1. Object 형

C#은 객체 지향 언어로 모든 요소들이 개체입니다. 그리고, C# 프로그래밍을 하면서 필요한 개체를 사용하기 위해 using을 사용하여 클래스를 불러내어 그 안에 있는 개체를 사용하였습니다.

 

C#은 char, int, bool과 같은 모든 데이터 형식을 Object 형으로부터 파생되도록 설계하였습니다.

이를 상속받았다고 이야기하는데 모든 데이터 형식은 Object 형식으로부터 상속받았다고 말합니다.

 

 

 

여기서 이 상속관계를 설명하면서 Object 형식은 부모로 그리고, 파생된 모든 데이터 형식을 자식이라고 합니다. 실제 부모로부터 자식이 상속을 받게 되면 그 모든 권리도 상속받게 되는 것처럼 모든 데이터 형식은 Object 형식의 모든 메서드를 사용할 수 있게 됩니다. 또한, Object 형식은 자식인 모든 데이터 형식을 사용할 수 있습니다.

 

2. 예제를 통해 Object 형식 확인

 그럼 예제를 통해 Object 형이 모든 데이터 형식을 받을 수 있는지 알아보겠습니다.

Visual Studio를 여시고 C# 콘솔 애플리케이션을 생성하시고 Main( ) 함수에 다음과 같이 코드를 작성합니다.

 

   static void Main(string[] args)

   {

      object a = 1234;

      object b = "안녕하세요. 아무개입니다.";

      object c = true;

      object d = 3.14159265358979;

      object e = 'Z';

 

      Console.WriteLine(a);

      Console.WriteLine(b);

      Console.WriteLine(c);

      Console.WriteLine(d);

      Console.WriteLine(e);

   }

 

코드 입력을 다 하시고 실행을 시키시면 문제없이 실행되는 것을 확인하실 수 있습니다.

 

 

 

3. 박싱과 언박싱

박싱(Boxing)이란 어떤 값 형태를 지닌 데이터를 참조 형태로 바꾸는 것을 말합니다. 이때 데이터는 Object 형식으로 변환되어 저장되며 저장되는 위치는 메모리의 힙 영역에 저장됩니다.

참조 형태로 바뀐다는 것은 주소값만을 갖는다는 의미로 C++에서 사용하는 포인터와 같은 의미입니다.

 

언박싱(UnBoxing)은 박싱과는 반대되는 개념으로 주소 값만 가지고 있는 참조 형태의 데이터를 다시 값 형태를 지닌 데이터로 변환하는 것을 말합니다.

 

   int i = 123;

   object o = i;

 

위와 같이 코딩을 하였다면 정수형 변수인 i를 선언하고 값으로 123을 입력합니다. 그리고, Object 형으로 변수 o를 선언하고 정수형 변수인 i의 값을 입력합니다.

 

변수 i의 값을 Object 형인 o에 데이터를 입력할 때 박싱이 일어나며 변수 o는 참조 형태의 변수가 됩니다.

 

이어서 아래와 같이 코딩을 합니다.

 

   int j = (int) o;

 

이제 정수형 변수 j를 선언하였으며 Object 형인 o의 값을 정수형으로 변환하여 입력하도록 코딩하였습니다. 이와 같이 Object 형인 o의 값을 정수형으로 변환하는 것이 언박싱으로 참조 형태였던 데이터를 다시 값의 형태를 지닌 데이터로 변환합니다.

 

반응형