티스토리 뷰

tmp

c#마스터 - #4Object 형식과 박싱,언박싱

박스여우 2015. 9. 14. 09:56




안녕하세요 박스여우입니다. C#마스터 4번째! 변수의 Object 형식과 박싱,언박싱에 대해 알아보겠습니다.

 

Object 형식

Object란 한국말로 '물건' 이라는 뜻이죠? 현재 당신이 사용하고있는 휴대폰, pc, 마우스, 전원 플러그, 책 등을 모두 '물건'이라 부를수 있죠

제가 하고싶은 말은 '물건' - Object는 모든 자료형을 다룰수 있다는 사실입니다.

 

Object 형식은 '상속'을 통해 다른 데이터의 형식도 마음껏 담을수 있습니다. Object형식은 이 '상속'이란 것으로 기본데이터형식,복합 데이터형식, 당신이 새롭게 만든 자료형까지도 모두 다룰수 있습니다. '상속'에 대해서는 차후 강좌에서 설명할 것이니, 일단은 Object 형식의 특징만 알아두시면 됩니다.

 

 

Object형식을 이용해 다양한 데이터를 담아봅시다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication57
{
    class Program
    {
        static void Main(string[] args)
        {
            Object a = 123;
            Object b = 3.141592653589793238462643383279m;
            Object c = true;
            Object d = "테스트";
 
            Console.WriteLine(a);
            Console.WriteLine(b);
            Console.WriteLine(c);
            Console.WriteLine(d);
        }
    }
}
 
cs

 

출력 결과


위의 예제 프로그램과 출력결과를 통해 Objcet 형식이 모든 데이터 형식을 다룰수 있다는 사실을 알수있습니다.

 

부호의 유/무, 부동 소수점 형식과, decimal 형식은 서로 데이터를 처리하는 방식이 다른데, 이것을 처리하는 것이 박싱과 언박싱 입니다.

 

 

박싱과 언박싱

Object 형식은 참조 형식이여서 데이터를 heap 에, int나 double 형식은 값형식이라 stack에 데이터를 할당합니다. 그런데, Object 형식에객체를 담게되면 값 형식의 데이터를 힙에 할당하기 위한 '박싱(Boxing)'과정을 수행합니다.

 

1
2
Object test = 100;
 
cs

위의 코드에서 100은 마치 int형식에 담긴것처럼 가상의 박스에 담겨 힙에 할당되고, 그 박스의 주소값을 Object 형식의 힙에 저장합니다.

 

그럼 아래과정은 어떨까요?

1
2
Object test = 100;
int unbox = (int)test;
cs

여기서 (int)는 Object 형식의 변수를 int 형식으로 변환하는 형변환입니다. 형변환에 대해서는 다음 포스팅에서 다룰테니 이번엔 언박싱에 집중해 봅시다.

 

Object 형식의 힙에 저장된 test의 주소를 불러와 박싱되있는것을 푼뒤 unbox변수에 저장한뒤 Stack에 할당합니다. 위 과정을 통해 Object 형식이 모든 데이터 형식을 다룰수 있는것입니다.


 

이상! 박스여우의 C#마스터 #4Object 형식과 박싱,언박싱 이였습니다.




댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함