2010-03-17 79 views
12

我有一個可爲空的布爾值。什麼是快速翻轉它的方法。換句話說,如果值爲TRUE,則爲FALSE,否則爲TRUE。C#,快速的方法來顛倒可空的布爾?

(從評論)澄清:

預期的行爲是:如果可空布爾有一個值,然後倒置,否則應該返回null。

+5

你認爲什麼是空的逆? – 2010-03-17 13:23:25

+1

@艾倫,我的預期行爲是,如果可爲空的布爾有一個值,然後倒置,否則應該返回空... – 2010-03-17 13:24:22

+5

你是這樣想的。 !myBool會給你你想要的行爲。 – DRBlaise 2010-03-17 13:50:43

回答

27

myBool = !myBool;

編輯:好的,根據問題的精確理解(即myBool說空,如果爲空),上面是簡單的答案。

+0

感謝亞當,這將工作在可空類型? – 2010-03-17 13:22:44

+3

該死,被一個「帖子太短」的錯誤毆打。 – ChrisF 2010-03-17 13:23:12

+0

@JL:只要值不爲null,它就可以在可空布爾值上工作。在這種情況下,您需要首先測試myBool.HasValue。 – 2010-03-17 13:23:59

19

編輯,drblaise是正確的,!工作得很好

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

這裏是真值表,我知道,這是無聊的,但我想看看怎麼這麼處理的「表」

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

+1,同樣你可以有一個^ = true,但這可能太晦澀了 – 2010-03-17 14:01:50

2

x =!(x ?? false)

+0

爲什麼不只是做x =!x? – 2010-03-17 17:13:12