Есть ли в С# оператор or
?
Я хочу сделать:
if (ActionsLogWriter.Close or ErrorDumpWriter.Close == true)
{
// Do stuff here
}
Но я не уверен, как я мог бы сделать что-то подобное.
Есть ли в С# оператор or
?
Я хочу сделать:
if (ActionsLogWriter.Close or ErrorDumpWriter.Close == true)
{
// Do stuff here
}
Но я не уверен, как я мог бы сделать что-то подобное.
С# поддерживает два логических оператора or
: одиночная строка |
и double-bar ||
.
Различие заключается в том, что |
всегда проверяет как левое, так и правое условие, а ||
проверяет только правостороннее условие, если оно необходимо (если левая сторона оценивается как false).
Это важно, когда условие на правой стороне включает обработку или приводит к побочным эффектам. (Например, если ваш метод ErrorDumpWriter.Close
занял некоторое время, чтобы завершить или изменить что-то состояние.)
Также стоит упомянуть, что в С# оператор OR является короткозамкнутым. В вашем примере Close кажется свойством, но если это метод, стоит отметить, что:
if (ActionsLogWriter.Close() || ErrorDumpWriter.Close())
принципиально отличается от
if (ErrorDumpWriter.Close() || ActionsLogWriter.Close())
В С#, если первое выражение возвращает true, второе выражение вообще не будет оцениваться. Просто знайте об этом. Это действительно работает в вашу пользу большую часть времени.
if (ActionsLogWriter.Close || ErrorDumpWriter.Close == true)
{ // Do stuff here
}
Или ||
в С#.
Вы можете посмотреть this.
как и в 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
}
С# имеет много общего с С++, но все еще существуют различия между двумя языками;)