【发布时间】:2015-12-19 15:08:54
【问题描述】:
我意识到处理可空类型的正确方法是使用 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;
}
}
编辑:只要指定了case Null 和default,任何Nullable 的行为都会被观察到。
【问题讨论】:
-
我在 VS2013 上没有这种行为
-
我猜你的符号已经过时并且它没有运行你认为它正在运行的东西,或者编译器正在做一些奇怪的优化事情并组合两个相等的块。也许在那里添加一些实际的代码,看看它做了什么..
-
我在 2010 年没有这种行为。
-
您是在查看调试器告诉您的内容,还是在这两种情况下也看到了实际不同的代码?
-
你检查过 IL 吗? (与 ildasm?)
标签: c# visual-studio-2015