我希望以前没有问过这个问题.
我有一个名为boolIsAllowed的可空布尔值和一个if条件,如下所示:
if(boolIsAllowed.HasValue && boolIsAllowed.Value)
{
//do something
}
Run Code Online (Sandbox Code Playgroud)
我的问题是这个好的代码还是我会更好地将它分成嵌套的if语句?如果boolIsAllowed.HasValue等于false然后抛出异常,是否会检查第二个条件?
我希望这个问题不是太愚蠢.
提前致谢.
Jon*_*eet 18
它很好.如果为false,则不会检查第二个条件HasValue,因此不会抛出异常.就像这样的事情:
string name = ...;
if (name != null && name.Length > 5)
Run Code Online (Sandbox Code Playgroud)
再一次,没关系 - 如果name为null,你将不会得到NullReferenceException ,因为&&是短路的.
同样地,|| 运算符是短路的,但是反过来 - 如果左手操作数为真,则整个表达式的计算结果为true而不检查右手操作数.例如:
// Treat null as if it were an empty string
if (name == null || name.Length == 0)
Run Code Online (Sandbox Code Playgroud)
编辑:如评论中所述,这仅适用于&&和|| -它并不适用于&和|,这始终评估两个操作数.
您可以检查真值,即使它为空:
bool? val = null;
if( val == true ) // Works
{
//do something
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1033 次 |
| 最近记录: |