Ric*_*ter 1 c# pattern-matching
在下面的代码中,result保证是1,或者没有顺序保证并且它也可以返回 吗2?
record Foo
{
bool X { get; init; }
bool Y { get; init; }
bool Z { get; init; }
}
var foo = new Foo { X = true, Y = true };
var result = foo switch
{
{ X: true } => 1,
{ Y: true } => 2,
{ Z: true } => 3,
_ => 0
}
Run Code Online (Sandbox Code Playgroud)
小智 5
这是一个switch 表达式,而不是 switch 语句。
是的。
表达式的结果
switch是第一个表达式臂的表达式值,switch该表达式臂的模式与输入表达式匹配,并且其大小写保护(如果存在)的计算结果为true。表达式switch臂按文本顺序求值。
来自switch 表达式 - 使用 switch 关键字的模式匹配表达式(Microsoft Learn)