У нас есть эквивалентные операторы присваивания для всех логических операторов, операторов сдвига, аддитивных операторов и всех мультипликативных операторов.
Почему логические операторы пропущены?Есть ли веская техническая причина, почему это сложно?
Почему логические операторы были опущены?Есть ли хорошая техническая причина, почему это трудно?
Они не .Вы можете сделать &= или |= или ^=, если хотите.
&=
|=
^=
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-one.aspx
и последующую статью April-Fools здесь:
http://blogs.msdn.com/b/ericlippert/archive/2011/04/01/compound-assignment-part-two.aspx