我认识到处理可空类型的正确方法是使用HasValue属性。但我想知道为什么下面的switch语句在null情况下而不是默认情况下中断。使用VS2015 C#4.0。另一台使用VS2010 C#4.0的计算机没有这个问题。打开可空布尔值:如果值为真,则为空
private void Testing()
{
bool? boolValue = true;
switch (boolValue)
{
case null:
break; //even though value is true, code runs here
default:
break;
}
}
编辑:行为与任何Nullable
如果仅case Null
和default
指定观察。
我在VS2013上没有得到这个行为 –
我猜你的符号是过时的,它不运行你认为正在运行的东西,或者编译器正在做一些奇怪的优化,并且把两个相等的块。也许在那里添加一些实际的代码,看看它有什么作用。 –
我在2010年没有得到那种行为。 – thewisegod