根据以下守则:
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交换机案例