C#学习教程:EnableNullableBoolean:当值为true时,case转为null使用HasValue属性。但是我想知道为什么下面的switch语句会在空大小写而不是默认情况下中断。使用VS2015C#4.0。另一台装有VS2010C#4.0的电脑没有同样的问题。私人无效测试(){布尔?布尔值=真;switch(boolValue){casenull:break;//即使值为真,代码也会在这里运行default:break;编辑:如果只指定caseNull和default则使用AnyNullableobservedbehavior。这将是一个非常简短的回答:您两周前刚刚报告了Roslyn错误#4701。里程碑设置为1.1,因此您现在必须在等待下一次编译器更新时使用单独的if子句解决此问题。这不是答案,我只是分享VS2013和VS2015生成的IL代码。原始C#代码:publicvoidTesting(){bool?布尔值=真;switch(boolValue){casenull:Console.WriteLine("null");休息;默认:Console.WriteLine("默认");休息;}}VS2013IL(反编译):publicvoidTesting(){bool?boolValue=newbool?(true);boolvalueOrDefault=boolValue.GetValueOrDefault();如果(boolValue.HasValue){Console.WriteLine("default");}else{Console.WriteLine("null");}}VS2015IL(反编译):以上是C#学习教程:启用NullableBoolean值:当值为true时,case转为null分享所有内容,如果你有用,需要深入了解C#学习教程,希望大家多多关注——publicvoidTesting(){bool?标志=新布尔?(真);布尔?标志2=标志;布尔?标志3=标志2;如果(flag3.HasValue){boolvalueOrDefault=flag3.GetValueOrDefault();}Console.WriteLine("null");}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
