-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 |