2010-03-17 9 views
12

Mam zerowalne bool. Jaki jest szybki sposób odwrócenia tego. Innymi słowy, jeśli wartość jest TRUE, ustaw FALSE, w przeciwnym razie ustaw ją na TRUE.C#, szybki sposób na odwrócenie wartości zerowej bool?

celu wyjaśnienia (z komentarzem):

Oczekiwane zachowanie jest: jeśli pustych bool ma wartość, a następnie odwrócić, w przeciwnym razie należy zwrócić wartość null.

+5

co uważasz za odwrotność wartości zerowej? –

+1

@Allen, moje oczekiwane zachowanie jest, jeśli zerowalny bool ma wartość, a następnie odwrócić, w przeciwnym razie powinien zwrócić wartość null ... –

+5

Jesteś o krok od myślenia o tym. ! myBool da ci pożądane zachowanie. – DRBlaise

Odpowiedz

27

myBool = !myBool;

Edycja: OK, w oparciu o udoskonaloną zrozumienia kwestii (tj myBool mówi null, jeśli to było null), powyższe jest najprostsza odpowiedź.

+0

Dzięki Adam, czy to działa na typy nullable? –

+3

Cholera, pobity przez błąd "po zbyt krótkim". – ChrisF

+0

@JL: Będzie działać na zerowych wartościach logicznych, o ile wartość nie jest pusta. W takim przypadku musisz najpierw przetestować myBool.HasValue. –

19

Edycja drblaise ma rację, ! działa dobrze

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

tutaj jest tabela prawdy, wiem, że to nudne, ale chciałam zobaczyć jak tak obsługiwane "tabele"

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

+1, podobnie możesz mieć wartość^= true, ale prawdopodobnie jest to zbyt niejasne –

2

x =! (x ?? false)

+0

dlaczego nie po prostu zrobić x =! X? –

Powiązane problemy