我刚刚在同事代码中遇到过这个问题.他有一个可以考虑的bool类型,他比较如下:
//foo has no value here and evaluated to false
if(foo==true)
{
doSomething();
}
Run Code Online (Sandbox Code Playgroud)
通常,我检查可以为空的布尔值的方式是这样的:
bool IsTrue(bool? value)
{
return value.HasValue && value.Value;
}
if(IsTrue(foo)){
doSomething()
}
Run Code Online (Sandbox Code Playgroud)
编辑:我运行了两种方法,它们看起来都是一样的.我问的是哪一个是正确的方法,如果需要额外的检查?
现在我正在质疑我自己和我的同事代码.我在这里做这个额外的检查有什么意义吗?或者我可以安全地做第一种方式吗?
谢谢(是的,我确实搜索了这个!:))
其实我不建议你来治疗null的false.使用非可空布尔值,或显式处理null值.还有一个选择:
if (foo ?? false)
{
}
Run Code Online (Sandbox Code Playgroud)
我会用这个.
bool IsTrue(bool? value)
{
return value.GetValueOrDefault();
}
Run Code Online (Sandbox Code Playgroud)
这将返回false时null或false和true,只有当它有一个值和true.
注意:您不能使用bool?in if statement,as if语句requires可隐式转换为的任何内容Boolean.其中as bool?不可转换为boolean,因此编译器会抱怨.
| 归档时间: |
|
| 查看次数: |
7266 次 |
| 最近记录: |