앙큼한 개발기록

C# const , readonly 설명 본문

개발/visualBasic

C# const , readonly 설명

angkeum 2018. 1. 18. 11:18


C# cont


C#에서 변수 선언 시에 cont 혹은 readonly를 선언 하면 "상수"가 된다.

 

const int a = 0; int const a2 = 0; // const는 앞뒤로 적용 가능 a = 1; // 변경시 컴파일 애러


readonly int b ; // 선언 해도 되고 안해도 컨트롤러에서 값을 설정 할 수 있다.


public Test()

{

b = 1;

}


const 는 선언 할 때 무조건 값을 설정 해야 하는 「상수」, 


readonly 는 const 변형 버전으로 초기에 선언 안 해도 되고, 컨트롤러에서 설정 해 줄 수 있으나 일반 변수처럼 사용은 불가능. 상수는 맞는데 「변할 수 있는(업데이트가 가능한) 상수」



그럼 왜 굳이 readonly를 만들었는가 하면 



두개의 프로젝트 A 와 B 가 존재 


A 와 B는 연결 되어 있음 


B 프로젝트의 상수 중  A의 const 상수를 받아서 설정하는 값이 존재함


나중에 A 프로젝트의 const상수를 업데이트 한 후 재 컴파일 실시 


B프로젝트 의 상수에는 반영이 안됨. (const는 한번 설정된 값은 재 컴파일 안 하면 변하지 않는다.)


그래서 다시 B프로젝트를 재 컴파일 해야 됨.


=> 이를 해결 하기 위해 readonly를 사용합니다. 


readonly는 상수 이지만 컨트롤러에서 참조 값을 받아서 선언 할 수 있기 때문에 상수이지만 변하는 상수라고 보시면 됩니다. 


그거 말고는 두 개의 기능은 똑같습니다. 


혹시 모르니까 그냥 readonly 쓰세염



const 랑 static


const & readonly랑 static은 다릅니다. 


static 은 정적변수입니다.  변수에요. 즉 static은 변할 수 있다는 이야기. 


변하기는 하는데. static은 가져다 쓰기 편하게 만든 변수라고 생각하시면 됩니다. 


static은 선언하여 컴파일 할 경우 메모리에 우선적으로 등록 됩니다. 


보통은 방문자 수나 아이디 값으로 사용하는데 프로그램에서 여기저기 호출해서 보여주고 싶은 데이터를 저장한다고 보시면 됩니다. 


const는 static 선언 안 해도 메모리에 저장됩니다. 선언 하면 에러 뜹니다. 


readonly는 static 아닙니다. 읽기 전용이라 이놈은 상수 는 상수 인데 읽어서 사용하는 상수이니까. 


readonly를 const처럼 사용 하고 싶으시면 static 선언 하시면 됩니다.  




오타 및 수정 사항 알려주시면 수정하겠습니다. 

 

 



'개발 > visualBasic' 카테고리의 다른 글

[C#] partial class 정리  (0) 2023.01.10
C# for foreach 문  (0) 2018.01.16
Comments