readonly 키워드

readonly vs. const

  readonly const
값 정의 런타임 컴파일 타임
메모리 할당 위치 Heap Stack(static 키워드로 Heap에 저장 가능)
접근 속도 느림 빠름
초기회 생성자 단계에서 할당 변수 선언과 동시에 값 할당
자료형 모든 자료형 내장 자료형
정적 필드 static 키워드 사용 가능 선언과 동시에 정적필드에 자동 할당

readonly를 쓰는 이유

  • const는 컴파일 상수
    • 변수 값이 바뀌는 경우 참조 받거나 영향을 받는 프로젝트 모두 다시 컴파일
  • readonly는 생성 시 선언하지 않아도 생성자에서 초기화 하여 사용
    • 실제 사용하는 단계에서 변수의 값을 가져올 수 있음
    • 상수값 변경 시 재컴파일을 하지 않음
    • 사용하는 생성자 단에서 변수에 값을 할당해서 사용 할 수 있음

사용 예시

// case 1:
class TEST
{
  public readonly string test = "start";

  // constructor 안에서 초기화 가능
  public TEST()
  {
    test = "abc";
  }
  public TEST(string s1)
  {
    test = s1;
  }
}

// case 2:
// readonly는 지역 변수로 사용 불가
static void Main(string [] args)
{
  const int abc = 3;    // ok
  readonly int def = 6; // error
}

출처

Categories: ,

Updated: