我有一個可爲空的布爾值。什麼是快速翻轉它的方法。換句話說,如果值爲TRUE,則爲FALSE,否則爲TRUE。C#,快速的方法來顛倒可空的布爾?
(從評論)澄清:
預期的行爲是:如果可空布爾有一個值,然後倒置,否則應該返回null。
我有一個可爲空的布爾值。什麼是快速翻轉它的方法。換句話說,如果值爲TRUE,則爲FALSE,否則爲TRUE。C#,快速的方法來顛倒可空的布爾?
(從評論)澄清:
預期的行爲是:如果可空布爾有一個值,然後倒置,否則應該返回null。
myBool = !myBool;
編輯:好的,根據問題的精確理解(即myBool
說空,如果爲空),上面是簡單的答案。
感謝亞當,這將工作在可空類型? – 2010-03-17 13:22:44
該死,被一個「帖子太短」的錯誤毆打。 – ChrisF 2010-03-17 13:23:12
@JL:只要值不爲null,它就可以在可空布爾值上工作。在這種情況下,您需要首先測試myBool.HasValue。 – 2010-03-17 13:23:59
編輯,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,同樣你可以有一個^ = true,但這可能太晦澀了 – 2010-03-17 14:01:50
x =!(x ?? false)
爲什麼不只是做x =!x? – 2010-03-17 17:13:12
你認爲什麼是空的逆? – 2010-03-17 13:23:25
@艾倫,我的預期行爲是,如果可爲空的布爾有一個值,然後倒置,否則應該返回空... – 2010-03-17 13:24:22
你是這樣想的。 !myBool會給你你想要的行爲。 – DRBlaise 2010-03-17 13:50:43