2010-03-17 19 views
12

Ich habe eine Nullable Bool. Was ist ein schneller Weg, um es umzukehren. In anderen Worten, wenn der Wert TRUE ist, mach es FALSE, sonst mach es TRUE.C#, schneller Weg, um einen Nullable Bool umzukehren?

To (aus den Kommentaren) zu klären:

erwartetes Verhalten ist: Wenn das Nullable-Bool einen Wert hat, dann umkehren, sonst null zurückgeben sollte.

+5

Was halten Sie für die Umkehrung von null? –

+1

@Allen, mein erwartetes Verhalten ist, wenn die Nullable Bool einen Wert hat, dann invertieren, sonst sollte Null zurückgeben ... –

+5

Sie sind weit über das Denken. ! myBool gibt Ihnen das gewünschte Verhalten. – DRBlaise

Antwort

27

myBool = !myBool;

Edit: OK, basierend auf einem verfeinertes Verständnis der Frage (das heißt myBool sagt null, wenn es null ist), der oben ist die einfachste Antwort.

+0

Dank adam, wird dies auf NULL-fähigen Typen arbeiten? –

+3

Verdammt, geschlagen von einem "Post zu kurz" -Fehler. – ChrisF

+0

@JL: Es wird auf Nullable Booleans funktionieren, solange der Wert nicht null ist. In diesem Fall müssen Sie myBool.HasValue zuerst testen. –

19

bearbeiten, drblaise ist richtig, ! funktioniert gut

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); 

hier ist die Wahrheitstabelle, ich weiß, es ist langweilig, aber ich wollte, wie SO behandelt "Tabellen"

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

+1, ähnlich könnte man ein^= true haben, aber das ist wahrscheinlich zu dunkel –

2

sehen x =! (x ?? false)

+0

warum nicht einfach x =! X? –

Verwandte Themen