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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top