예제 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 문)도 알아봤다. 이제 각각의 경우에 대해 좀 더 자세히 살펴보자.

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