컴파일타임 상수 vs 런타임 상수
변수와 달리 한번 정의해 둔 값으로서 더 이상 변경할 필요가 없는 것들을 의미한다.(ex 원주율)
Const - 컴파일타임에 처리 (컴파일 타임에 변수가 값으로 대체된다)
- 선언 시 반드시 그 값을 할당해야 한다. (변수를 정의할 때 초기화되고 그 이후로는 변경할 수 없다.)
- Const는 내장된 숫자형, enum, 문자열, null에 대해서만 사용될 수 있다. (내장 자료형이어야만 컴파일 타임에 상수를 리터럴로 대체할 수 있기 때문)
- Const 상수는 선언시 자동으로 Static 키워드가 추가된다
Readonly - 런타임에 처리 (런타임에 값이 평가된다. 상수에 대한 참조로 컴파일 된다.)
- 선언 시 반드시 값을 할당하지 않아도 된다.
- Readonly는 모든 자료형에 대해 사용 가능하다.
- Readonly는 변수 정의 이후에 생성자에서 한번 더 초기화 할 수 있으며 그 이후에는 수정 불가하다.
Readonly 는 변수를 통해 값을 참조하기 때문에 Const보다 느리다.
하지만 성능차이가 미미하기 때문에 대부분의 경우 유연성을 위해 Readonly를 사용하는 것이 좋다.
'Programming > C++, C#' 카테고리의 다른 글
[C#] Delegate , Event (0) | 2018.06.06 |
---|---|
[C#] Out vs Ref (0) | 2018.06.06 |
[C#] 박싱과 언박싱 (0) | 2018.06.06 |
[C#] 암시적 변환 vs 명시적 변환 (0) | 2018.06.05 |
[C#] 값 타입 vs 참조 타입 (0) | 2018.06.05 |