2010-03-17 16 views
12

Ho un valore nulla bool. Qual è un modo rapido per invertirlo. In altre parole se il valore è TRUE, fallo FALSE, altrimenti rendilo VERO.C#, modo rapido per invertire un bool nullable?

Per chiarire (dai commenti):

comportamento previsto è: se il bool annullabile ha un valore, quindi invertire, altrimenti dovrebbe restituire null.

+5

quale consideri l'inverso di null? –

+1

@Allen, il mio comportamento previsto è, se il valore nullo ha un valore booleano, quindi invertito, altrimenti dovrebbe restituire null ... –

+5

Si sta pensando troppo a questo. ! myBool ti darà il comportamento che desideri. – DRBlaise

risposta

27

myBool = !myBool;

Edit: OK, sulla base di una conoscenza raffinata della questione (vale a dire myBool dice nulla se fosse nullo), quanto sopra è la risposta più semplice.

+0

Grazie adam, funziona su tipi nullable? –

+3

Accidenti, battuto da un errore "post troppo breve". – ChrisF

+0

@ JL: Funzionerà su valori nulli booleani purché il valore non sia nullo. In tal caso è necessario prima testare myBool.HasValue. –

19

Edit, drblaise è giusto, ! funziona bene

bool? a = null; 
bool? b = false; 
bool? c = true; 

a = !a; 
b = !b; 
c = !c; 

Assert.AreEqual(a, null); 
Assert.AreEqual(b, true); 
Assert.AreEqual(c, false); 

ecco la tabella di verità, lo so, è noioso ma ho voluto vedere come trattato in maniera "tavoli"

value  !value 
|---------|-----------| 
| null | null | 
|---------|-----------| 
| false | true | 
|---------|-----------| 
| true | false | 
|---------|-----------| 
+1

+1, allo stesso modo potresti avere un^= true, ma probabilmente è troppo oscuro –

2

x =! (x ?? false)

+0

perché non fare semplicemente x =! X? –

Problemi correlati