Unity3D/C#

C# 강좌 Day-05 (object, boxing, 값형식, 참조형식)

일등하이 2021. 8. 14. 23:32
반응형

object 형식 

C#의 모든 타입은 object 형식이다.

즉, 모든 값은 object형식의 변수에 할당 가능.

 

object형식 변수 선언및 할당

using System;

namespace HelloWorld
{
    class Program
    {
        enum eState
        {
            Idle = 100, Run = 200, Attack, Die
        }

        static void Main(string[] args)
        {
            object obj = 123;
            object obj2 = eState.Idle;
            object obj3 = "홍길동";
            object obj4 = '홍';
            object obj5 = 12.32f;
        }
    }
}

 

 

 

박싱(boxing)

데이터형을 최상위 object형으로 변환 하여 힙 메모리에 저장

 

언박싱(unboxing)

힙에 저장된 형식을의 값을 다시 원래 형식으로 변환 

object obj = 123;   //박싱
int damage = (int)obj;  //언박싱

 

 

 

 

값형식과 참조형식

 

값 형식은 스택 메모리에 저장 

int, float, bool, char, enum, struct

메모리에 값이 직접 저장됨

메서드 호출이 끝나면 값은 제거됨 

 

참조 형식은 힙 메모리에 저장

string, class, interface, delegate, array

스택메모리에 주소값이 닮기고 값은 힙에 저장 

참조 하지 않는경우 GC에 의해 제거됨 

 

 

반응형