테크매니아
C# : const vs readonly 본문
반응형
차이는 무엇인가
const는 선언과 초기화가 동시에 이루어진다.
readonly는 필드에 선언할 때와 생성자 안에서 얼마든지 값을 바꿀 수 있다.
- 즉 생성자에 따라 다른 값이 생성되는 것이 가능하다.
const는 컴파일 타임에 readonly는 런타임에서 상수가 된다.
const는 언제 쓰나
- 절대로 변하지 않을 상수가 필요할 때 사용
- 컴파일 타임에서 상수이므로, const변수 값을 참조하는 모든 코드들이 영향을 받게 된다.
- 예를 들면 원주율값
readonly는 언제 쓰나
- 선언할 때 또는 생성자 안에서 값을 바꿀 수 있다
- 구조체에 사용하면 구조체 변경을 막을 수 있다.
- 리턴할 때 쓰면 참조로 리턴하고 참조 변수 값에 쓰기가 허용되지 않는다.
- 아래 처럼 ref 지시자와 함께 쓰면 참조로 리턴 받은 값을 호출자가 변경하지 못함을 의미한다.
- (리턴한 놈이 제약조건 없이 리턴했지만 쓰는 놈이 조심스럽게 받아오고 싶을 때)
- (또는 리턴할 때 부터 조심스럽게 건넬 때)
- (이 경우는 전자)
private static readonly SamplePoint s_origin = new SamplePoint(0, 0, 0);
public static ref readonly SamplePoint Origin => ref s_origin;
참고문헌
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/readonly
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/const
반응형