C#’或’运营商?
C#中有or
运营商吗?
我想要做:
if (ActionsLogWriter.Close or ErrorDumpWriter.Close == true) { // Do stuff here }
但我不确定我怎么能这样做。
C#支持两个布尔值or
运算符:单个条|
和双杠||
。
区别在于|
始终检查左右条件,而||
只有在必要时才检查右侧条件(如果左侧评估为假)。
当右侧的病症涉及处理或导致副作用时,这是很重要的。 (例如,如果您的ErrorDumpWriter.Close
方法需要一段时间才能完成或更改某些状态。)
另外值得一提的是,在C#中OR运算符是短路的。 在您的示例中,Close似乎是一个属性,但如果它是一个方法,则值得注意:
if (ActionsLogWriter.Close() || ErrorDumpWriter.Close())
从根本上说是不同的
if (ErrorDumpWriter.Close() || ActionsLogWriter.Close())
在C#中,如果第一个表达式返回true,则根本不会计算第二个表达式。 请注意这一点。 它实际上在大多数时候对你有利。
if (ActionsLogWriter.Close || ErrorDumpWriter.Close == true) { // Do stuff here }
或者是||
在C#中。
你可以看看这个 。
就像在C和C ++中一样,布尔或运算符是||
if (ActionsLogWriter.Close || ErrorDumpWriter.Close == true) { // Do stuff here }
单个“|”运算符将评估表达式的两侧。
if (ActionsLogWriter.Close | ErrorDumpWriter.Close == true) { // Do stuff here }
如果表达式返回true,则双运算符“||”将仅评估左侧。
if (ActionsLogWriter.Close || ErrorDumpWriter.Close == true) { // Do stuff here }
C#与C ++有许多相似之处,但它们仍然是两种语言之间的差异;)