Const 키워드 :
const 상수는 반드시 선언 시 그 값을 할당해야 한다
const 상수는 한번 값이 할당되면 이후 변경 불가능하다
const 상수는 자동으로 static 이다
const 로 선언한 상수는 자동으로 static 변수가 됩니다. 즉 정적 상수의 역할을 하게 되는 것이죠.
다음과 같이 const 상수와 일반 변수를 선언하고 IL코드를 보면 const 상수는 자동으로 static 키워드가
추가된 것을 확인할 수 있습니다
class MyClass{
public const int X = 1;
public int Y = 1;
}
readonly 키워드 : 두번째 상수 로서
앞서 const 는 선언과 동시에 값을 할당, 즉 초기화 해야 한다고 했습니다.
readonly는 여기에 더불어 생성자에서 한번 더 값을 할당할 수 있는 확장성을 제공합니다
즉 readonly 상수는 선언할 때 값을 할당할 수도 있으며 생성자에도 할당할 수 있습니다.
class MyClass{
public readonly int X = 1;
public MyClass(int i){
X = i; //생성자를 통해 상수 읽기전용 X의 값을 할당한다
}
}
readonly 상수는 선언 시 값을 할당하지 않아도 됩니다
readonly 상수는 생성자에서 한번 더 그 값을 변경할 수 있습니다
readonly 상수는 static 이 아닙니다
참조 형식 상수 선언
const 에서는 문자열(string)과 null을 제외하고는 참조 타입을 초기화 할 수 없는
반면 readonly는 참조타입의 객체를 생성할 수 있습니다. 즉 다음과 같은 선언이 가능합니다
public readonly int[] array = new int[] { 1, 2 };
'C#, ASP.NET, CORE, MVC' 카테고리의 다른 글
[C#] Generics 일반화 프로그래밍 (0) | 2018.07.20 |
---|---|
[C#] 기초문제1 (0) | 2018.07.19 |
[펌] 가비지 컬렉터 (Garbage Collector) 의 원리, 동작 메커니즘 (2) | 2018.07.19 |
5강. 클래스 OOP (1) | 2018.07.19 |
4강. 파일 입출력 (0) | 2018.07.19 |