본문 바로가기
C#

[C#] const와 readonly 차이

by ifhead 2022. 9. 10.
반응형

변수를 초기화하는 시점

  • const는 코드에 명시된 변수값을 compile 시점에 확정합니다.
  • readonly는 프로그램이 메모리에 올라가는 runtime 시점에 값을 확정합니다.

const는 컴파일 타임 상수이며, readonly는 런타임 상수입니다. 상수는 프로그램이 종료될 때까지 변경하거나 수정할 수 없습니다. 그렇다면 차이점은 무엇인지 알아봅시다.

 


const

  • 컴파일 타임 상수입니다. 
  • 상수는 기본적으로 정적(Static)입니다.
  • 내장자료형 (정수형, 실수형, Enum, String)에 대해서만 사용 할 수 있습니다.
  • 변수 선언과 동시에 값을 초기화해야 합니다.
  • 클래스 내부의 상수라고 해도 인스턴스화 없이도 값에 접근할 수 있습니다(static과 비슷합니다).
  • 메모리 할당 위치는 기본적으로는 Stack Memory이지만 static 선언을 하면 Heap Memory에 저장됩니다.

 


readonly

  • 런타임 상수이다. exe 또는 dll을 사용할 때 변수의 값을 가져옵니다.
  • 모든 자료형에 사용 할 수 있으며, 생성과 동시에 초기화 할 필요는 없습니다.
  • 생성자에서 초기화할 수 있습니다. 생성자 오버로딩으로 인해 객체마다 값이 다를 수 있다는 이야기입니다.
  • 읽기 전용 변수는 비정적non-static 변수와 비슷하게 동작합니다. 클래스를 인스턴스화해야만 값에 접근할 수 있습니다.
  • 힙 메모리에 할당됩니다.

 

반응형

댓글