예제 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()