2010-03-17 21 views
12

Tengo un bool nullable. ¿Cuál es una forma rápida de invertirlo? En otras palabras, si el valor es VERDADERO, hazlo FALSO; de lo contrario, hazlo VERDADERO.C#, forma rápida de invertir un bool nullable?

Para aclarar (a partir de los comentarios):

comportamiento esperado es: si el bool anulable tiene un valor, a continuación, invertir, de lo contrario debe devolver null.

+5

¿cuál considera que es el inverso de null? –

+1

@ Allen, mi comportamiento esperado es, si el bool que admite nulos tiene un valor, invierta, de lo contrario debería devolver nulo ... –

+5

Usted está pensando demasiado en esto. ! myBool te dará el comportamiento que deseas. – DRBlaise

Respuesta

27

myBool = !myBool;

Editar: OK, basado en una comprensión refinada de la cuestión (es decir myBool dice nula si era nula), lo anterior es la respuesta más simple.

+0

Gracias adam, ¿funcionará esto en tipos anulables? –

+3

Maldición, golpeado por un error de "publicación demasiado corta". – ChrisF

+0

@JL: Funcionará en booleanos anulables siempre que el valor no sea nulo. En ese caso, primero debe probar myBool.HasValue. –

19

Editar, drblaise es correcto, ! funciona 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); 

aquí es la tabla de verdad, lo sé, es aburrido, pero yo quería ver "tablas" cómo manipulará

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

+1, del mismo modo podría tener un^= verdadero, pero esto es probablemente demasiado oscuro –

2

x =! (x ?? false)

+0

¿por qué no simplemente hacer x =! X? –

Cuestiones relacionadas