c# - 打开可空 bool 值 : case goes to null when value is true

标签 c# visual-studio-2015

我意识到处理可空类型的正确方法是使用 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 Nulldefault已指定。

最佳答案

这将是一个非常简短的回答:您只需点击 Roslyn bug #4701 , 两周前报道。

里程碑设置为 1.1,因此现在您必须使用单独的 if 子句解决此问题,同时等待下一次编译器更新。

关于c# - 打开可空 bool 值 : case goes to null when value is true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32720260/

相关文章:

msbuild - npm安装错误:“找不到v120的构建工具(Platform Toolset ='v120')”

xml - 元素 <Target> 中的属性 "Name"无法识别

c# - 如何获得 SHA-256 证书指纹?

c# - 从 MVC3 中的查询字符串中删除一个值并重定向到生成的 URL

c# - 类型是接口(interface)或抽象类,不能实例化

visual-studio - ESLint 支持 Visual Studio 2017

c# - 为什么 'Any CPU (prefer 32-bit)' 允许我在 .NET 4.5 下分配比 x86 更多的内存?

c# - 实现 IValueConverter 将字符串转换为图像

c# - 如何订阅双击?

c++ - visual studio 2015 clr form deigner 无法从文件加载 ui