더북(TheBook)

예제 13-11 배열에 대해 그 내용을 복사하지 않고 읽기 전용으로만 접근할 수 있는 뷰 생성 ▶ ReadOnlyArrayView.cs

class ReadOnlyArrayView<T>
{
    private readonly T[] values;

 

    public ReadOnlyArrayView(T[] values) =>
        this.values = values;

 

    public ref readonly T this[int index] =>
        ref values[index];
}
...

static void Main()
{
    var array = new int[] { 10, 20, 30 };
    var view = new ReadOnlyArrayView<int>(array);

    ref readonly int element = ref view[0];
    Console.WriteLine(element);
    array[0] = 100;
    Console.WriteLine(element);
}

 


➊ 내용을 복사하지 않고 배열에 대한 참조만 복사
➋ 배열 내의 개별 요소에 대한 읽기 전용 별칭을 반환
➌ 배열의 내용을 수정하면 참조 지역 변수에도 그대로 반영
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.