Study/C#

const보다는 readonly 사용이 권장되는 이유

13.d_dk 2021. 7. 27. 12:02
728x90
반응형

const보다는 readonly 사용이 권장되는 이유

    • C#의 상수는 컴파일 타임(compile time) 상수런타임(run time) 상수 두 유형이 있음
    • 컴파일 타임 상수는 프로그램이 컴파일될 때 지정되며 동작이 빠른 장점이 있음
    • 런타임 상수는 런타임에 값이 평가되며 유연성이 높다는 장점이 있음
    • 컴파일 타임 상수는 const 키워드로 정의
    • 런타임 상수는 readonly 키워드로 정의
1
2
3
4
5
public class UsefulValues
{
    public static readonly int StartValue = 5;
    public const int EndValue = 5;
}
cs
  • 컴파일 타임 상수는 컴파일 시 변수가 값으로 대체됨
  • 런타임 상수는 컴파일 시 변수가 값에 대한 참조를 가짐
  • 컴파일 상수는 내장된 숫자형, enum, 문자열, null 등 꼭 컴파일 시 값이 정해져야 하는 하는 경우에만 사용하는 것을 권장
  • 그 외의 상수의 경우 런타임 상수로 정의하고 프로그램이 실행되는 런타임 시에 정해지도록 하는 것이 좋음
  • 그 이유는 상수의 값이 수정되어야하는 경우 컴파일 상수는 변경 후 컴파일을 모두 다시 해야 하지만, 런타임 상수는 런타임 시 값이 결정되어 유연하게 변경이 가능하기 때문
  • 예시로는 세금 계산을 하는 동작과 같이 법령에 의해 변경되는 경우가 있으며 이 경우 런타임 상수를 통해 유연성 있는 코드 작성을 가져갈 수 있음

컴파일 타임 상수와 런타임 상수에 대한 간단 정리 도식

 

Reference

  • effective C#; 강력한 C# 코드를 구현하는 50가지 전략과 기법 3판
반응형