더북(TheBook)

예제 13-10 읽기 전용 참조 반환과 읽기 전용 참조 지역 변수 ▶ RefReadonly.cs

static readonly int field = DateTime.UtcNow.Second;  ----- 읽기 전용 field 변수를 임의의 값으로 초기화

static ref readonly int GetFieldAlias() => ref field;  ----- field의 읽기 전용 별칭을 반환

static void Main()
{
    ref readonly int local = ref GetFieldAlias(); ----- 메서드를 호출하여 읽기 전용 참조 지역 변수를 초기화
    Console.WriteLine(local);
}

이러한 방식은 인덱서에 대해서도 동일하게 적용할 수 있으므로, 변경 불가능한 컬렉션이 개별 항목을 노출할 때에 그 내용을 복사해서 전달하지 않더라도 데이터가 변경될 위험을 피할 수 있다. 더불어, 읽기 전용이 아닌 변수를 반환할 때 읽기 전용 참조를 사용하는 경우도 있다. 이렇게 사용하면 임의의 컬렉션에 대해서 내용을 복사하지 않고, 읽기 전용으로만 접근하도록 도와주는 ReadOnlyCollection처럼 해당 변수에 대한 읽기 전용 뷰를 제공할 수 있다. 다음 예제는 이러한 아이디어를 구현한 예다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.