Выражения внутри C# 8 переключатель - PullRequest
1 голос
/ 07 апреля 2020

Я бы хотел иметь возможность вызывать метод / локальную функцию из нового C# переключения шаблона выражения соответствия.

Вот мой пример:

        string result = value switch
        {
            IsFizz(value) => "Fizz",
            IsBuzz(value) => "Buzz",
            (IsFizz(value) && IsBuzz(value)) => "FizzBuzz",
            _ => value.ToString()
        };

Однако я получаю следующие ошибки:

Одноэлементный шаблон деконструкции требует некоторого другого синтаксиса для устранения неоднозначности. Рекомендуется добавить обозначение отбрасывания '_' после закрывающей пары ')'.

Ошибка Sytnax, '=>' ожидается

Недопустимый термин выражения '&&'

Разве нельзя использовать новые переключатели таким образом?

1 Ответ

1 голос
/ 07 апреля 2020

Да, но в предложении when:

        string result = value switch
        {
            _ when IsFizz(value) => "Fizz",
            _ when IsBuzz(value) => "Buzz",
            _ when (IsFizz(value) && IsBuzz(value)) => "FizzBuzz",
            _ => value.ToString()
        };

(разве тест FizzBuzz не должен стоять первым?)

...