값이 변경되지 않는 읽기 전용 상수
c#에서 값이 변경되지 않도록 하는 용도의 const와 readonly 두 종류의 상수가 있다
각각 값이 변경되지 않는 용도로 사용되지만, 각각 동작 방식과 사용 방식에 차이가 있다.
const 는 컴파일 시간에 결정되는 상수이다.
한 번 값을 할당하면 이후에 변경이 불가능하며, 반드시 선언과 동시에 값을 할당해야 한다.
또한, const 는 값 형식이나 문자열처럼 기본 데이터 형식에만 사용이 가능하다
static 키워드 없이도 자동으로 정적 취급이 되어서 스택에 값이 할당 된다.
public class Test
{
public const int MAX_VALUE = 100;
}
class Program : MonoBehaviour
{
void Start()
{
Debug.Log(Test.MAX_VALUE); // 100 출력
}
}
const 값을 수정하려면 이 코드를 사용하는 모든 코드가 재컴파일되어야 한다.readonly 는 런타임에 값을 할당할 수 있지만, 한 번 할당된 이후에는 값을 변경할 수 없다.
주로 생성자에서 값을 할당하는 경우에 사용된다.
참조형과 값 형식 모두 사용할 수 있으며, 컴파일 시간에는 값이 정해지지 않을 수 있다.
public class Test
{
public readonly int MAX_VALUE;
public Test(int maxValue)
{
MAX_VALUE = maxValue;
}
}
public class Program : MonoBehaviour
{
void Start()
{
Test test = new Test(100);
Debug.Log(test.MAX_VALUE);
}
}
const 에 비해 런타임 시점에 값이 결정되므로 성능이 조금 떨어질 수 있다.