C#’或’运营商?


C# 'or' operator?

C_中是否有or运算符?

我想做:

1
2
3
4
if (ActionsLogWriter.Close or ErrorDumpWriter.Close == true)
{
    // Do stuff here
}

但我不知道我该怎么做。


C支持两个Boolean or操作符:单条|和双条||

区别在于|总是同时检查左右两种情况,而||只在必要时检查右侧情况(如果左侧评估为假)。

当右侧的情况涉及处理或产生副作用时,这一点非常重要。(例如,如果您的ErrorDumpWriter.Close方法需要一段时间来完成或更改某个状态。)


同样值得一提的是,在c中,or运算符是短路的。在您的示例中,Close似乎是一个属性,但如果它是一个方法,则值得注意的是:

1
if (ActionsLogWriter.Close() || ErrorDumpWriter.Close())

1
if (ErrorDumpWriter.Close() || ActionsLogWriter.Close())

在C中,如果第一个表达式返回true,则不会对第二个表达式进行计算。请注意这一点。它实际上在大多数时候都对你有利。


1
2
3
if (ActionsLogWriter.Close || ErrorDumpWriter.Close == true)
{    // Do stuff here
}

或者是c中的||

你可以看看这个。


单个""运算符将计算表达式的两边。

1
2
3
4
    if (ActionsLogWriter.Close | ErrorDumpWriter.Close == true)
{
    // Do stuff here
}

双运算符""仅在表达式返回true时计算左侧。

1
2
3
4
    if (ActionsLogWriter.Close || ErrorDumpWriter.Close == true)
{
    // Do stuff here
}

C语言与C++有许多相似之处,但它们仍然是两种语言之间的差异;


就像C和C++一样,布尔或运算符是||

1
2
3
4
if (ActionsLogWriter.Close || ErrorDumpWriter.Close == true)
{
    // Do stuff here
}