C#是否在条件语句中使用短路评估?

时间:2013-03-21 22:07:14

标签: c#

以下代码是不错的风格。我们是否可以假设如果对象为空则不会执行第二个谓词?

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

3 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:4)

正确。如果左表达式求值为true,则右表达式将不会计算。如果要确保评估两者,可以使用按位或运算符|

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

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

答案 2 :(得分:3)

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