[C#] const와 readonly의 차이
2020. 2. 6. 21:03
728x90
반응형
C# 에서 const 와 readonly는 상수형 타입입니다. 보다 자세히 말씀드린다면,
const는 컴파일 타입의 상수이며, readonly는 런타임 상수입니다.
const
- 컴파일 타입의 상수이다. (컴파일 시 const 변수의 값을 가져온다.)
- 내장자료형 (정수형, 실수형, Enum, String)에 대해서만 사용 할 수 있다.
- 변수 선언과 동시에 값을 할당 해야 한다.
- 메모리 할당 위치는 Stack Memory 이다. 단, static 선언을 하면 Heap Memory에 저장 가능하다.
readonly
- 런타임 상수이다. (exe 또는 dll을 사용할 때 변수의 값을 가져온다.)
- 모든 자료형에 사용 할 수 있으며, 생성과 동시에 초기화 할 필요는 없다.
- 단, 생성자 단계에서 단 1번 할당을 통해 초기화 할 수 있다.
- 메모리 할당 위치는 Heap Memory이다.
왜 const 보다 readonly가 더 좋은가?
const는 Stack Memory에 저장 되기 때문에 접근이 빠르다는 장점이 있지만,
const는 컴파일 상수이기 때문에, const 변수 값이 바뀌는 경우 해당 프로젝트 뿐만 아니라 참조 받거나 영향을 받는 프로젝트 모두 재 컴파일을 해야 하는 단점이 있다.
반면, readonly는 생성시 선언하지 않아도, 생성자에서 초기화 하여 사용 할 수 있기 때문에 유연하며, 실제 사용하는 단계에서 변수의 값을 가져오는 장점이 존재한다.
상수값 변경시 재 컴파일을 하지 않고, 사용하는 생성자 단에서 변수에 값을 할당해서 사용 할 수 있기 때문에
const 보다는 readonly의 사용을 좀 더 고려해볼 필요가 있다.
728x90
'Program Language > C#' 카테고리의 다른 글
[C#] C#에서 unsafe 키워드 사용 방법 (0) | 2020.03.10 |
---|---|
[C#] SQL Injection 예방 코드 (1) | 2020.02.12 |
[C#] EditorConfig를 이용한 코딩규칙 정형화 (0) | 2020.01.30 |
[C#] SonarQube - 정적분석 (0) | 2020.01.29 |
[C#] MD5를 이용해서 암호화 방법 (0) | 2020.01.13 |