개발 고수(가 되고 싶은) 블로그

언어공부/C# 공부

c# const vs readonly vs init

개발고수(가되고싶음) 2023. 11. 5. 20:23

const

const int a;
  • 컴파일시 할당된 상수로 변환된다.
  • 생성자에서 값을 넣어주지 않으면 컴파일 에러가 발생된다.
  • stack 영역에 저장되며 따라서 많은 const 값이 있다면 메모리가 터질지도..?

readonly

readonly int a;
  • 단 한번만 값을 넣어줄 수 있다. (언제든 단한번)
  • Mono에서 쓸 수 없다.
  • C# 8.0 에서 추가됨
  • 생성자 or 초기화에서만 초기화 가능 —> mono의 경우 awake 밖에 못쓰니까 못쓰는 것
  • struct 에서 많이 씀
  • heap 에 할당된다.

init

int a {get; init;}
  • property 에서 설정해주면 된다.
  • mono 에서 쓸 수 있다. (2021.1 이상에서)
  • 단 한번만 값을 넣어줄 수 있다.
  • C# 9.0 에서 추가됨
  • immutable 과 비슷한 속성을 가짐.

공통점 : 값이 한번만 바뀌거나 절대 바뀌지 않는다라는 점

반응형