2010-03-17 6 views
12

J'ai une valeur Nullable. Quel est un moyen rapide de l'inverser. En d'autres mots, si la valeur est VRAI, faites-la FAUX, sinon rendez-la VRAIE.C#, moyen rapide d'inverser un booléen nullable?

Pour clarifier (des commentaires):

Comportement attendu est: si le bool annulable a une valeur, puis inverser, sinon renvoyer la valeur null.

+5

Que considérez-vous comme l'inverse de null? –

+1

@Allen, mon comportement attendu est, si le bool valable a une valeur, puis inverser, sinon devrait retourner la valeur nulle ... –

+5

Vous êtes bien au-delà de penser cela. ! myBool vous donnera le comportement que vous voulez. – DRBlaise

Répondre

27

myBool = !myBool;

Edit: OK, basée sur une compréhension fine de la question (à savoir myBool dit nulle si elle est nulle), ce qui précède est la réponse la plus simple.

+0

Merci adam, cela fonctionnera-t-il sur les types nullables? –

+3

Merde, battu par une erreur "poster trop court". – ChrisF

+0

@JL: Cela fonctionnera sur les booléens nullables tant que la valeur n'est pas nulle. Dans ce cas, vous devez d'abord tester myBool.HasValue. –

19

Modifier, drblaise est juste, ! fonctionne très bien

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

ici est la table de vérité, je sais, il est ennuyeux, mais je voulais voir comment manutentionné "tables"

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

+1, de même que vous pourriez avoir un^= vrai, mais c'est probablement trop obscur –

2

x =! (x ?? false)

+0

pourquoi ne pas simplement faire x =! X? –

Questions connexes