반응형

C# : const vs readonly

정리하게 된 배경

C++를 주로 사용하던 사람에게는 const라는 키워드가 상당히 익숙하다. 나중에 만들어진 C#은 당연히 기존의 관용적으로 사용되는 것을 보완 하는 방식으로 발전을 하게 되었다. 문제는 C#의 기본서를 통해서 readonly와 const의 차이점에 대한 설명이 부족하다. 때문에 이를 보완하기 위하여 기록한다.


const

 constant(일정한)의 앞글자 머리에서 따왔듯이 변하지 않는다는 의미로 사용된다. 하지만, 초기 컴퓨터는 대부분 수치를 다루다보니 키워드에 대해서 "상수"로 번역이 되어진것 같다. 하지만, 실제 의미는 원 단어에서 온것 처럼 변하지 않는 것을 의미한다(물론 그 것도 메모리상에서는 숫자에 불과하긴하다). 이때문에 선언시 초기화 된 값을 읽을 수 밖에 없다.


readonly

 C#에서 등장한 키워드로 직역만 해도 앞의 const와 동일하게 의미를 갖고 있다. 그럼 같은걸 뭐하로 const와 readonly 둘 다 사용하게 만들었을까? 가독성을 높이기 위해서 일까?

 사실 const와 readonly는 차이가 있다. const의 경우 말그대로 선언시 반드시 초기화를 해줘야 한다. 하지만, readonly는 선언시 반드시 초기화 할 필요가 없다. 하지만, readonly이지 않는가? 그렇다. 클래스의 맴버변수(혹은 필드)로 있을때 한번만 정의가 될 수 있다. 즉, 생성자로 클래스의 인스턴스가 생성될때 결정되고 변하지 않는 값을 사용할때 적절하다.

 물론 프로퍼티를 사용해도 같은 기능을 충분히 구현할 수 있다. 다만, 이러한 기능을 사용할지 않할지는 사용하는 개발자의 몫이다.




반응형

+ Recent posts