반응형
Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

테크매니아

C# : const vs readonly 본문

카테고리 없음

C# : const vs readonly

SciomageLAB 2024. 10. 3. 16:40
반응형

차이는 무엇인가

  • 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

반응형