[C#] 상수 배열은 어떻게 할까? Const Array? , (''에 할당할 식은 상수여야 합니다.)

상수 배열은 어떻게 할까? const array , (''에 할당할 식은 상수여야 합니다.)에 대한 해결 방법을 알아보도록 합시다.

일반적으로 고려할 수 있는 상수 할당입니다. 할당 시 문제가 없습니다.

//상수 문제 없음
        const string CONST = "Constant";

리드온리로 배열을 할당해 보았습니다. 문제 없이 컴파일이 되는 것을 확인할 수 있습니다.

readonly string[] CONSTS_R = { "R1", "R2" };

다만, C#에서 할당할 식은 상수 배열이 될 수 없습니다. 상수 배열을 설정하려고 시도하면 컴파일러에서 다음과 같은 오류가 발생합니다.

//오류, CS0133, 'ViewBeomSang.CONSTS_C'에 할당할 식은 상수여야 합니다.
        const string[] CONSTS_C = { "C1", "C2" };

요약하면, C# 에서 배열은 상수가 될 수 없습니다. 개발자의 의도는 배열내부의 각 객체를 상수로 선언 하라고 지시하는 것이지만, 실제로 컴파일러는 배열내부가 아니라 배열자체로 상수여부를 판단하여 그런 게 아닐까 싶습니다.

그렇기에 C#에서 상수 배열은 readonly 를 사용하시면 됩니다. 필요시 static 한정자를 추가해 주십시오.

댓글