C# 8 switch 中的表达式

Expressions inside C# 8 switch

我希望能够从新的 C# 开关表达式模式匹配中调用 method/local 函数。

这是我得到的一个例子:

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

但是我得到以下错误:

A single-element deconstruct pattern requires some other syntax for disambiguation. It is recommended to add a discard designator '_' after the close paren ')'.

Sytnax error, '=>' expected

Invalid expression term '&&'

难道不能以这种方式使用新的开关吗?

是的,但在 when 子句中:

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

FizzBuzz 测试不应该先来吗?)