Почему в C # нет операторов || = или && =? - PullRequest
53 голосов
/ 14 июня 2011

У нас есть эквивалентные операторы присваивания для всех логических операторов, операторов сдвига, аддитивных операторов и всех мультипликативных операторов.

Почему логические операторы пропущены?Есть ли веская техническая причина, почему это сложно?

1 Ответ

48 голосов
/ 14 июня 2011

Почему логические операторы были опущены?Есть ли хорошая техническая причина, почему это трудно?

Они не .Вы можете сделать &= или |= или ^=, если хотите.

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

...