예제 12-5 평가 순서가 영향을 미치는 분해 과정 ▶ TupleDeconstructionEvaluationOrdering.cs
StringBuilder builder = new StringBuilder("12345");
StringBuilder original = builder; ----- 분석을 위해 기존 빌더 객체의 참조를 복사
➊
(builder, builder.Length) =
(new StringBuilder("67890"), 3);
➋
Console.WriteLine(original);
Console.WriteLine(builder);
➊ 분해 시 할당이 수행됨
➋ 이전 빌더와 새 빌더의 내용을 출력
이 코드의 중간 행이 가장 이해하기에 까다로운 부분인데, 이 문제를 이해하기 위한 핵심적인 질문은 StringBuilder가 자신만의 고유한 Length 속성을 가지고 있는지를 묻는 것이다. builder는 기존의 값을 참조하는 것일까? 아니면 분해 시 첫 번째로 수행되는 할당 과정을 통해 새롭게 할당된 값을 참조하는 것일까? 다음 예제는 분해 과정에서 수행되는 작업들을 분해하여 하나하나 수행하도록 펼쳐 놓았다.