반응형
const와 readonly는 무엇인가?
단어에서 알 수 있듯이 const는 constant의 약자로 상수라는 뜻이다. 상수는 변하지 않는 값이며 프로그래머가 개발 도중에 생길 수 있는 실수로 인해 값이 변하는 것을 막기 위해 존재한다. readonly 역시 직역하자면 읽기만 가능 이라는 뜻인데 다른 말로 "write가 불가능"이라고 할 수 있겠다. 따라서 두 키워드 모두 값의 변경을 막고자 할 때 사용한다.
어떠한 차이가 있는가?
const와 readonly는 메모리 할당 영역부터 다르다. const는 static영역에 메모리가 할당되기 때문에 프로그램 시작 전부터 이미 메모리가 할당이 되어있다. readonly는 일반 필드 영역에 할당된다. 이 같은 이유로 다음과 같은 차이점이 발생하게 된다.
우선 const는 static영역에 할당 되므로 선언과 동시에 초기화해주어야 한다. 그 어떠한 값도 프로그램 실행 후 할당하려고 하면 이미 const값이 static영역에 값이 정해져 있는 후기 때문에 넣어줄 수 없다.
반면 readonly는 생성자를 통하여 값을 대입할 수 있다. 따라서 선언과 동시에 초기화를 시켜주지 않아도 된다!
readonly는 static이 아니기 떄문에 static키워드를 통해 static으로 만들어 줄 수 있다. 반면 const는 태생이 static이기 때문에 static으로 만들 수 없다.
[주의할 점: static으로 만든 readonly는 static생성자를 통해서 초기화를 시켜주어야 한다.]
반응형
'C# 프로그래밍 > 문법 개념' 카테고리의 다른 글
[C#] 인터페이스 (Interface) (0) | 2022.05.05 |
---|---|
[C#] 액션과 펑션 (Action & Func) (0) | 2022.05.05 |
[C#] 델리게이트 (Delegate) (0) | 2022.05.04 |
[C#] 직렬화 (Serialization) (0) | 2022.05.03 |
[C#] 구조체와 클래스 (Struct & Class) (0) | 2022.05.03 |