더북(TheBook)

예제 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()
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.