본문 바로가기
C#

박싱과 언박싱에 대한 이해

by JAESEONG LEE- developer 2022. 7. 15.

object 형식은 참조 형식이기 때문에 힙에 데이터를 할당합니다. int 형식이나 double 형식은 값 형식이기 때문에 스택에 데이터를 할당합니다.

 

object 형식은 값 형식의 데이터를 힙에 할당하기 위한 "박싱(Boxing)" 기능을 제공합니다.

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
26
using System;
 
namespace BoxingUnboxing
{
    class MainApp
    {
        static void Main(string[] args)
        {
            int a = 123;
            object b = (object)a;
            int c = (int)b;
 
            Console.WriteLine(a);
            Console.WriteLine(b);
            Console.WriteLine(c);
 
            double x = 3.1414213;
            object y = x;
            double z = (double)y;
 
            Console.WriteLine(x);
            Console.WriteLine(y);
            Console.WriteLine(z);
        }
    }
}
cs

 

 

이러한 실행 결과를 얻을 수 있다.