Perché non ci sono || = o && = operatori in C#?
-
27-10-2019 - |
Domanda
Abbiamo operatori di assegnazione equivalenti per tutti gli operatori logici, operatori a turni, operatori additivi e tutti gli operatori moltiplicativi.
Perché gli operatori logici sono stati lasciati fuori? C'è un buon motivo tecnico per cui è difficile?
Soluzione
Perché gli operatori logici sono stati lasciati fuori? C'è un buon motivo tecnico per cui è difficile?
Non l'hanno fatto. Tu puoi fare &=
o |=
o ^=
se vuoi.
bool b1 = false;
bool b2 = true;
b1 |= b2; // means b1 = b1 | b2
Il ||
e &&
Gli operatori non hanno una forma composta perché francamente, sono un po 'sciocchi. In quali circostanze vorresti dire
b1 ||= b2;
b1 &&= b2;
In tale che il lato destro non viene valutato se il lato sinistro non cambia? Sembra che solo poche persone userebbero effettivamente questa funzione, quindi perché inserirla?
Per ulteriori informazioni sugli operatori composti, consultare il mio articolo serio qui:
http://blogs.msdn.com/b/ericlippert/archive/2011/03/29/compound-assignment-part-one.aspx
e l'articolo di follow-up April-Fools qui:
http://blogs.msdn.com/b/ericlippert/archive/2011/04/01/compound-assignment-part-two.aspx
Altri suggerimenti
Forse solo usare
isAdmin = isAdmin || IsGroupAdmin()
Immagino sia parzialmente perché a ||= b
è un po 'confuso perché potrebbero esserci due versioni dell'implementazione: a = a || b
, o a = b || a
. E agiscono in modo diverso perché il lato destro dell'espressione a volte non viene valutato.