Почему нет || = или && = операторы в C#?
-
27-10-2019 - |
Вопрос
У нас есть эквивалентные операторы назначения для всех логических операторов, операторов смены, аддитивных операторов и всех мультипликативных операторов.
Почему логические операторы остались в стороне? Есть ли хорошая техническая причина, почему это сложно?
Решение
Почему логические операторы остались в стороне? Есть ли хорошая техническая причина, почему это сложно?
Они этого не сделали. Анкет Ты можешь сделать &=
или же |=
или же ^=
Если хочешь.
bool b1 = false;
bool b2 = true;
b1 |= b2; // means b1 = b1 | b2
А ||
а также &&
У операторов нет составной формы, потому что, честно говоря, они немного глупы. При каких обстоятельствах вы бы хотели сказать
b1 ||= b2;
b1 &&= b2;
Такой, что правая сторона не оценивается, если левая сторона не изменяется? Похоже, что только несколько человек действительно использовали бы эту функцию, так зачем ее вкладывать?
Для получения дополнительной информации о составных операторах см. Моя серьезная статья здесь:
http://blogs.msdn.com/b/ericlippert/archive/2011/03/29/compound-assignment-part-ony.aspx
и последующая статья в апреле-фланге здесь:
http://blogs.msdn.com/b/ericlippert/archive/2011/04/01/compound-assignment-part-two.aspx
Другие советы
может просто использовать
isAdmin = isAdmin || IsGroupAdmin()
Я думаю, это частично потому, что a ||= b
как -то сбивает с толку, потому что могут быть две версии реализации: a = a || b
, или же a = b || a
. Анкет И они действуют по-разному, потому что правая сторона выражения иногда не оценивается.