본문 바로가기

C#/기본적인 팁

C# 응용프로그램에서 상수를 정의할 때 static readonly를 사용하자

상수를 정의할 때 public으로 지정해서 다른 클래스가 접근할 수 있게 한 경우에는 const 대신 static readonly를 사용

(응용 프로그램을 개발할 때 버전 수정을 통해 변경될 가능성이 없는 고정값 숫자는 실제로 거의 없기 때문에 실질적으로는 const대신 전부 static readonly를 사용하는 것이 추천된다.)

 

const 키워드로 상수를 정의해서 고정 숫자값을 한 곳에서 정의할 수 있다.

 

const는 매우 편리한 기능이지만 주의해야 할 점이 있다.

const로 지정한 상수는 public으로 지정하지 않는 것이 좋다는 것이다.

private으로 지정했을 경우에는 문제가 없지만 public으로 지정해서 다른 클래스가 참조할 수 있게 했을 경우에는 버전 관리에 관한 문제가 발생할 위험이 있다.

 

const로 정의한 값은 빌드할 때 값이 결정되므로

dll을 교체해도 exe는 여전히 예전 값을 사용해서 동작하게 된다.

 

readonly일 경우에는 실행할 때 값이 참조다.

따라서 dll을 교체해도 프로그램이 새로운 값을 사용해서 동작합니다.


나중에 변경될 가능성이 있는 값을 상수로 지정해서 공개할 경우에는 const 키워드가 아닌 static readonly를 사용해야 한다.