Pourquoi n'y a-t-il pas d'opérateurs / / = ou &&= en C#?

Nous avons des opérateurs d'affectation équivalents pour tous les opérateurs logiques, les opérateurs de décalage, les opérateurs additifs et tous les opérateurs multiplicatifs.

Pourquoi les opérateurs logiques ont-ils été laissés de côté? Est-il une bonne raison technique pour laquelle il est dur?

46
demandé sur Antonio 2011-06-14 19:23:08

1 réponses

Pourquoi les opérateurs logiques ont-ils été laissés de côté? Est-il une bonne raison technique pour laquelle il est dur?

Ils ne l'ont pas fait. Vous pouvez le faire &= ou |= ou ^= si vous le souhaitez.

bool b1 = false;
bool b2 = true;
b1 |= b2; // means b1 = b1 | b2

Les opérateurs || et && n'ont pas de forme composée car franchement, ils sont un peu stupides. Dans quelles circonstances voudriez-vous dire

b1 ||= b2;
b1 &&= b2;

De telle sorte que le côté droit ne soit pas évalué si le côté gauche ne change pas? Il semble que quelques personnes utiliserait réellement cette fonctionnalité, alors pourquoi le mettre dans?

Pour plus d'informations sur les opérateurs composés voir mon article sérieux ici:

Http://blogs.msdn.com/b/ericlippert/archive/2011/03/29/compound-assignment-part-one.aspx

Et le suivi Avril-Fools article ici:

Http://blogs.msdn.com/b/ericlippert/archive/2011/04/01/compound-assignment-part-two.aspx

48
répondu Eric Lippert 2011-06-14 15:56:17