더북(TheBook)

예제 12-16 변수에 문제가 있을 때 var 패턴을 이용하여 대응 ▶ ShapePerimeterWithPatternsSwitchCaseUsingVar.cs

static double Perimeter(Shape shape)
{
    switch (shape ?? CreateRandomShape())
    {
        case Rectangle rect:
            return 2 * (rect.Height + rect.Width);
        case Circle circle:
            return 2 * PI * circle.Radius;
        case Triangle triangle:
            return triangle.SideA + triangle.SideB + triangle.SideC;
        case var actualShape:
            throw new InvalidOperationException(
                $"Shape type {actualShape.GetType()} perimeter unknown");
    }
}

이 코드를 조금 변형해서 actualShapeswitch 문 이전에 초기화하고, switch 내부에서는 기존처럼 default를 이용할 수도 있다.

지금까지 C# 7.0에서 소개된 패턴 매칭을 모두 살펴봤다. 그리고 패턴 매칭을 사용할 수 있는 두 가지 문맥(is 연산자와 switch 문)도 알아봤다. 이제 각각의 경우에 대해 좀 더 자세히 살펴보자.

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