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
测试不应该先来吗?)
我希望能够从新的 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
测试不应该先来吗?)