如果 - 或语句的计算结果为TRUE,实际上它应该为FALSE

时间:2013-09-05 18:27:24

标签: c# if-statement

不确定我在这里缺少什么..应该很简单..

tblCurrent不等于NULL tblCurrent.Rows.Count等于0

if (tblCurrent != null | tblCurrent.Rows.Count != 0)
{
    //Do something
}
else
{
    // This is what I want
}

应该看到正确的条件是0所以它应该返回false并放入else块?我错过了什么?

2 个答案:

答案 0 :(得分:5)

如果tblCurrent不等于null,则tblCurrent != null评估为true,因此整体OR也将评估为true ,因为OR评估为true当且仅当其中一方或双方评估为true时。

您的逻辑看起来应该使用AND运算符&&而不是OR,如下所示:

if (tblCurrent != null && tblCurrent.Rows.Count != 0) {
    ...
} else {
    ...
}

&&运算符短路评估,因此即使tblCurrentnull,也不会出现异常。

答案 1 :(得分:3)

正确的OR operator||| operatorbitwise OR

您的逻辑需要AND,而不是OR

if (tblCurrent != null && tblCurrent.Rows.Count != 0)