[유니티 / C#] readonly와 const

C#에서 readonly와 const는 상수형 타입으로 변수의 값이 변하지 않도록 하는 키워드입니다.

readonly는 런타임 상수이고 const는 컴파일 상수입니다.

 

 

 

readonly

런타임 상수로 변수 선언 시에 값을 넣거나 생성자를 통해서 값 할당이 가능합니다.

생성자가 끝난 후에는 값 변경이 불가능하며, 메서드 내부에서 변경이 불가능합니다.

모든 자료형에 사용이 가능하며 Heap 메모리에 할당됩니다.

 

public class Example
{
    public readonly int key;
    
    public Example(int key)
    {
        this.key = key; // 생성자에서 초기화 가능
    }
}

 

 

 

const

컴파일 상수로 변수 선언과 동시에 값을 할당해줘야 합니다.

내장자료형(정수형, 실수형, Enum, String)만 사용 가능하며 Stack 메모리에 할당됩니다.

Stack 메모리에 할당되기 때문에 접근이 빠르다는 장점이 있습니다.

단, static 선언을 할 경우 Heap 메모리에 저장 가능합니다.

 

public class Example
{
    public const int key = 250903; // 컴파일 시 값 할당, 이후 변경 불가
}