더북(TheBook)

예제 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는 기존의 값을 참조하는 것일까? 아니면 분해 시 첫 번째로 수행되는 할당 과정을 통해 새롭게 할당된 값을 참조하는 것일까? 다음 예제는 분해 과정에서 수행되는 작업들을 분해하여 하나하나 수행하도록 펼쳐 놓았다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.