1

下面的代码是不是很好的风格。如果对象为 null ,我们是否总是假设第二个谓词不会被执行?

if(someObject == null || someObject.Count == 0)
{
    //do something
}
4

3 回答 3

7

是的。||被称为短路运算符,这意味着如果它知道足以返回真(它的第一个操作数为真),那么它不会评估第二个操作数并立即返回真。

&&类似——如果它的第一个操作数返回 false,它会立即返回 false,而不检查第二个。

于 2013-03-21T22:08:30.710 回答
4

正确的。如果左边的表达式计算为true右边的表达式将不会计算。如果您想确保两者都被评估,您可以使用按位或运算符|

if(someObject == null | someObject.Count == 0)
{
    //do something
}

小心这一点,你可能并不总是得到你所期望的。

于 2013-03-21T22:09:51.460 回答
3

是的。C# 中的||运算符短路。如果第一个条件不满足,则不会执行下一个条件。

于 2013-03-21T22:08:08.557 回答