Вопрос

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

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

Это было полезно?

Решение

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

Они этого не сделали. Анкет Ты можешь сделать &= или же |= или же ^= Если хочешь.

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. Анкет И они действуют по-разному, потому что правая сторона выражения иногда не оценивается.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top