根据以下守则:
string someString = null;
switch (someString)
{
case string s:
Console.WriteLine("string s");
break;
case var o:
Console.WriteLine("var o");
break;
default:
Console.WriteLine("default");
break;
}
为什么 switch 语句在 case var o上匹配?
我的理解是,当 s == null时 case string s不匹配,因为(有效地) (null as string) != null计算为 false。VS 代码上的智能感知告诉我,o也是 string。有什么想法吗?
类似: 带空检查的 C # 7交换机案例