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 };



+ Recent posts