2010-11-23 8 views
3

현재, 내 코드는 다음과 유사합니다어떻게 C#에서 쓸 수없는 배열을 선언 할 수 있습니까?

private static readonly int[] INTARRAY = {1, 2, 3}; 

이 정적 생성자의 int[] 외부의 새로운 인스턴스에 INTARRAY에 할당에서 저를 방지 할 수 있지만 여전히 나를 개별 int 요소에 할당 할 수 있습니다. 예를 들어
:

INTARRAY[1] = 5; 

어떻게이 배열이 완전히 읽기 전용으로 만들 수 있습니까? 이것은 값 유형의 배열이며 선언에서 배열 초기화 자로 지정됩니다. 초기 값을 무기한으로 유지하려면 어떻게해야합니까?

답변

9

배열 인 경우이를 사용할 수 없습니다. 그것이 IList<int>로 당신이 기꺼이하는 경우에, 당신은 할 수 있습니다 :

private static readonly IList<int> INTARRAY = new List<int> {1, 2, 3}.AsReadOnly(); 
+0

또한 배열로 필요하면 목록에서'.ToArray()'를 사용합니다. 또한,'ReadonlyCollection' 타입은 당신이 그것을 사용하는 것에 따라'List'보다는 유용 할 수도 있습니다. – Nobody

1

불행하게도, 배열이 기능을 제공하는 내장 C#을 구조 없다. 가장 좋은 해결책은 비즈니스 요구 사항을 충족하는 경우 목록을 대신 사용하는 것입니다.

1

배열을 사용하도록 설정 한 경우, 요소에 액세스하는 읽기 전용 indexer과 함께 간단한 래퍼 클래스를 작성할 수 있습니다.

관련 문제