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 ++有许多相似之处,但它们仍然是两种语言之间的差异;)