예제 12-6 분해 시 수행되는 평가 순서를 보여주기 위한 코드 ▶ TupleDeconstructionEvaluationOrderingExplained.cs
StringBuilder builder = new StringBuilder("12345");
StringBuilder original = builder;
StringBuilder targetForLength = builder; ----- 할당 대상 평가
➊
(StringBuilder, int) tuple =
(new StringBuilder("67890"), 3);
➋
builder = tuple.Item1;
targetForLength.Length = tuple.Item2;
Console.WriteLine(original);
Console.WriteLine(builder);
➊ 튜플 리터럴 평가
➋ 할당 대상으로 할당 수행
할당 대상이 지역 변수인 경우에는 추가적인 평가가 필요 없으므로 직접 값을 할당할 수 있다. 하지만 변수의 속성에 값을 할당하려면 첫 단계의 일부로 할당할 대상을 우선 평가해야 한다. 이 때문에 targetForLength 변수가 필요한 것이다.