2016-08-02 1 views
2

Это очень простой вопрос, но я хотел бы получить некоторые пояснения, чтобы быть уверенным.Имеет ли оператор «или» в C# «и/или» или «тот или иной»?

Рассмотрим следующий пример:

if (FirstName == "Bert" || Surname == "Berterson") 

Имеет ли || (или) оператора, в данном случае:

А. «Если имя человека называется Бертом и/или имеет фамилию Бертерсон» (т. е. «Берт Бертерсон», «Берт Смит», «Гэри Бертерсон»,)

- или -

B. «Если у человека есть либо первое имя Bert или фамилия Berterson, но не оба» (т.е. «Bert Berterson» не будет квалифицироваться в то время как «Салли Berterson» и " Bert Billhouse "будет квалифицироваться)

Благодарим вас за внимание, я надеюсь, что это имеет смысл и извиняется за такой простой вопрос

ответ

6

|| оператора в C# является включительно ИЛИ что короткого замыкания. Это означает, что для примера:

if (FirstName == "Bert" || Surname == "Berterson") 
  • если FirstName является "Bert", все выражение true и вторая часть даже не оценивали.

  • если FirstName не является "Bert", вторая часть оценивается и определяет результат всего выражения.

Для исключительной ИЛИ (XOR) с помощью ^ оператора:

if ((FirstName == "Bert")^(Surname == "Berterson")) 

Это было бы только true если точно один из двух условий true.

+0

В случае булевых значений, оператор XOR также эквивалентно '=': то есть 'A^B' эквивалентно' A = B', если 'Ā' и' B! 'являются булевыми. Конечно, это почти всегда менее читаемо, что обычно делает «лучший выбор». – Kyle

2

«Или» означает логический или, что верно, если хотя бы одно из утверждений истинно.

Чтобы выразить «XOR», вы должны использовать ^

0

Это первый (как в большинстве языков программирования), что означает логический или. Другой оператор, который вы описали, называется xor (эксклюзивный или), который представлен оператором C# ^.

Обратите внимание, что ||&&) являются «закороченными», что означает, что они оценивают лениво. Например, в a || b, если значение a истинно, C# вообще не проверяет b. Это в отличие от побитового или оператора |, который всегда будет оценивать оба операнда.

0

Это логическое ИЛИ, которое означает, что если выполняется первое условие, второе условие или оба, результат верен.

Из документации:

Условный-оператор ИЛИ (||) выполняет логическую или его BOOL операндов. Если первый операнд оценивает значение true, второй операнд не оценивается. Если первый операнд оценивает значение false, второй оператор определяет, будет ли выражение OR в целом оцениваться как true или false.

https://msdn.microsoft.com/en-us/library/6373h346.aspx

 Смежные вопросы

  • Нет связанных вопросов^_^