Подтвердить что ты не робот

С# 'или' оператор?

Есть ли в С# оператор or?

Я хочу сделать:

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

Но я не уверен, как я мог бы сделать что-то подобное.

4b9b3361

Ответ 1

С# поддерживает два логических оператора or: одиночная строка | и double-bar ||.

Различие заключается в том, что | всегда проверяет как левое, так и правое условие, а || проверяет только правостороннее условие, если оно необходимо (если левая сторона оценивается как false).

Это важно, когда условие на правой стороне включает обработку или приводит к побочным эффектам. (Например, если ваш метод ErrorDumpWriter.Close занял некоторое время, чтобы завершить или изменить что-то состояние.)

Ответ 2

Также стоит упомянуть, что в С# оператор OR является короткозамкнутым. В вашем примере Close кажется свойством, но если это метод, стоит отметить, что:

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

принципиально отличается от

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

В С#, если первое выражение возвращает true, второе выражение вообще не будет оцениваться. Просто знайте об этом. Это действительно работает в вашу пользу большую часть времени.

Ответ 3

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

Ответ 4

Или || в С#.

Вы можете посмотреть this.

Ответ 5

как и в C и С++, логическое значение или оператор ||

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

Ответ 6

Единственный оператор "|" будет оценивать обе стороны выражения.

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

Двойной оператор "||" будет оценивать только левую сторону, если выражение возвращает true.

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

С# имеет много общего с С++, но все еще существуют различия между двумя языками;)