성능이 아주 중요하고, 상수의 값이 절대 바뀌지 않는 경우에만 const를 사용하고, 그 외에는 readonly를 사용한다.
C#의 상수는 두 유형으로 나뉜다. const로 선언되는 상수는 compile-time 상수, readonly로 선언되는 함수는 runtime 상수이다.
compile-time 상수는 컴파일 시에 그 값이 아예 literal로 대체된다. 따라서 compile-time 상수는 내장 숫자형, enum, 문자열, null만 사용 가능하며, 메서드 내부에서도 선언할 수 있다.
runtime 상수는 컴파일 시에 해당 변수에 대한 참조 코드를 생성한다. runtime 상수는 구조체, 클래스에 대해서도 사용할 수 있지만, 메서드 내부에서 선언할 수 없다.
상술한 특별한 경우에만 const를 사용하고 그 외에 readonly를 사용할 것을 권유하는 이유는 향후 어떠한 이유에서 수정이 가해질 때, compile-time 상수로 선언된 부분의 변화를 반영하려면 해당 compile-time 상수에 대한 참조가 있는 모든 부분을 아예 새로 컴파일해야 하지만, runtime 상수로 선언된 부분의 경우 해당 부분만 수정하는 코드를 배포하여 전체 응용 프로그램에 수정사항을 반영할 수 있기 때문이다.
'게임개발 > Effective C#' 카테고리의 다른 글
[Effective C#] string.Format() vs 문자열 보간 (1) | 2023.11.12 |
---|---|
[Effective C#] 3. is, as vs cast (보충 필요) (0) | 2023.11.11 |
[Effective C#] 1. 지역 변수에 대한 var 사용 (0) | 2023.11.06 |