더북(TheBook)

이 경우에도 text는 해당 범위 전체에서 유효하지만, 항상 할당이 이루어지는 것은 아니다. 이름 공간을 좀 더럽히더라도 다양한 방법으로 값을 얻어올 수 있도록 하려면 이 방법이 상당히 유용하다. 다음 예를 보자.

if (input is string text)
{
    Console.WriteLine("Input was already a string; using that");
}
else if (input is StringBuilder builder)
{
    Console.WriteLine("Input was a StringBuilder; using that");
    text = builder.ToString();
}
else
{
    Console.WriteLine(
        $"Unable to use value of type ${input.GetType()}. Enter text:");
    text = Console.ReadLine();
}
Console.WriteLine($"Final result: {text}");

textif 문 밖에서도 사용해야 하기 때문에 전체 범위에서 유효해야 한다. 그리고 text에 두 가지 방법 중 한 가지 방법으로 값을 할당한다. builder 변수는 중간 블록에서만 일시적으로 사용될 뿐이지만, 다른 방법이 없다.

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