예제 13-16 읽기 전용 필드와 읽고 쓸 수 있는 필드를 통해 각 구조체의 속성에 접근 ▶ ImplicitFieldCopy.cs

    class ImplicitFieldCopy
    {
        private readonly YearMonthDay readOnlyField =
            new YearMonthDay(2018, 3, 1);
        private YearMonthDay readWriteField =
            new YearMonthDay(2018, 3, 1);
    
        public void CheckYear()
        {
            int readOnlyFieldYear = readOnlyField.Year;
            int readWriteFieldYear = readWriteField.Year;
        }
    }

    속성에 접근하는 코드 두 줄의 IL 코드를 비교해 보면 조금 차이가 있음을 알 수 있는데, 여기서는 이 둘의 차이를 이해하는 것이 매우 중요하다. 우선 읽기 전용 필드에 접근하는 IL 코드부터 살펴보자. 코드를 간단하게 나타내기 위해 네임스페이스와 관련된 부분은 제거했다.

    ldfld valuetype YearMonthDay ImplicitFieldCopy::readOnlyField
    stloc.0
    ldloca.s V_0
    call instance int32 YearMonthDay::get_Year()
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.