본문 바로가기
Programming/C#

[C#] const보다는 readonly가 좋다

by devfactory 2024. 9. 28.

-const

 ● 컴파일타임 상수.

 ● 컴파일타임에 변수가 값으로 대체된다.

const int a = 100;
if(100 == a)

때문에 위의 코드는 아래와 정확히 동일한 IL코드로 컴파일된다.

if(100 == 100)

 ● 내장된 숫자형, enum, 문자열, null에 대해서만 사용가능한 한계가 있다.

 

 

-readonly

 ● 런타임 상수.

 ● 컴파일타임에 값으로 대체되는 것이 아닌 상수에 대한 참조로 컴파일된다. 때문에 메서드 내에서 선언이 불가능하다.

 ● 생성자에서 초기화될 수 있다.

 ● 어떤타입과도 함께 사용될 수 있다.

 ● 상수의 값이 런타임에 평가되어 동일클래스의 인스턴스라 하더라도 인스턴스별로 서로 다른 값을 가질 수 있다.

 

 

readonly 대신 const를 사용하면 성능이 빠르다는 장점이 있지만 이를 통해 얻을 수 있는 성능 개선 효과가 크지 않고 유연성을 해치는 단점이 있다.

반응형

'Programming > C#' 카테고리의 다른 글

[C#] Thread(1) 스레드의 개념  (1) 2024.09.28
[C#] event  (1) 2024.09.28
[C#] Types  (0) 2024.09.28
[C#] Func 대리자 (지정된 형식의 값을 반환하는 대리자)  (1) 2024.09.28
[C#] 확장메서드  (1) 2024.09.28