C#/C#_기초강의

(C#) 자료형: object, 박싱과 언박싱

코딩ABC 2023. 4. 20. 09:26
반응형

object

C# object 형식은 .NET System.Object의 별칭입니다.

C#의 모든 형식(값 형식, 참조 형식, 사용자 정의 형식 등) System.Object를 상속 받습니다.

그러므로 object는 모든 자료형의 조상이므로 모든 형식의 값을 할당 받을 수 있습니다.

object 참조형식에 속합니다.

 

        private void button1_Click(object sender, EventArgs e)
        {
            object a = 100;             // int
            object b = 3.14;            // double
            object c = "Hello";         // string
            object d = true;             // bool
            object ee = DateTime.Now;   // 구조체
            object f = new Point();     // 클래스
        }

 

object형식은 모든 값을 받을 수 있지만, 연산을 위해서는 필요한 형식으로 변환을 해야 합니다.

Object 형식을 값 형식으로 변환하는 것을 박싱(boxing)이라 하며, 값 형식은 object 형식으로 변환하는 것을 언박싱(unboxing)이라 합니다.

            object a = 100;
            int b = 200;
            int c = a + b;     // 오류 

 object 형식을 int로 변환하기 위해서는 캐스팅(castring)이 필요합니다.

           object a = 100;
            int b = 200;
            int c = (int)a + b;     // Type casting

 

박싱과 언박싱(Boxing & Unboxing)

박싱(boxing)은 값 형식을 object 형식 또는 이 값 형시에서 구현된 인터페이스 형식으로 변환하는 것을 말합니다.

int a = 100;
object b = a;  // Boxing
int c = (int)b;   // Unboxing

Boxing을 하게 되면 개체를 관리되는 힙(heap)에 저장하고, Unboxing을 하면 개체가 값 형식으로 변환됩니다.

Boxing은 암시적이며 unboxing은 명시적입니다.

박싱 언박싱 Boxing Unboxing

 

 

 

 

반응형