더북(TheBook)

만약 이 코드가 유효하다면, 읽기 전용 필드에 대해 수년간 쌓아온 모든 추론이 훼손될 것이다. 다행히 그런 일은 발생하지 않는다. 컴파일러는 마치 readnolyField의 값을 수정하지 못하도록 금지하는 것처럼 y에 값을 할당할 수 없도록 제한한다. 하지만 이 코드를 MixerVariables의 생성자 내부에서 수행했다면 아무런 문제가 없다. 이는 마치 생성자 내에서라면 readonlyField에 조차 값을 쓸 수 있도록 허용하는 것과 마찬가지다. 간단히 말해서, 별칭을 부여하려는 변수에 값을 쓸 수 있는 상황이라면 그 변수를 이용하여 참조 지역 변수를 초기화할 수 있다. 이는 참조 매개변수로 필드를 사용할 수 있었던, C# 1.0부터의 ref의 동작과도 일치한다.

이런 제약으로 인해 참조 지역 변수의 공유 기능을 활용하되 쓰기를 허용하고 싶지 않은 경우에는 참조 지역 변수를 사용할 수가 없었다. 이는 C# 7.0의 제약이었다. 하지만 C# 7.2가 출시되면서 이러한 문제를 해결할 수 있는 새로운 기능이 포함되었는데, 이에 대해서는 13.2.4절에서 알아볼 것이다.

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