什麼是短,優雅的,按位的方式來寫的這個C#代碼的最後一行,而無需編寫b
兩次:否定基礎上的布爾另一個布爾
bool getAsIs = ....
bool b = ....
getAsIs ? b : !b
什麼是短,優雅的,按位的方式來寫的這個C#代碼的最後一行,而無需編寫b
兩次:否定基礎上的布爾另一個布爾
bool getAsIs = ....
bool b = ....
getAsIs ? b : !b
真值表可表示爲:
getAsIs b getAsIs ? b : !b
--------------------------------
0 0 1
0 1 0
1 0 0
1 1 1
結果可以表示爲:
result = (getAsIs == b);
+1:儘可能容易 – horgh
+1爲真值表和最簡單的答案 – HappyNomad
其實,我可以根據這個答案重新構建我的問題。也就是說,我可以將'getAsIs'重命名爲'targetValue'。 – HappyNomad
嘗試使用二進制XOR(^ Operator (C# Reference)):
bool getAsIs = true;
bool b = false;
bool result = !(getAsIs^b);
我認爲這是
var foo = !(getAsIs^b)
短,優雅,但絕對是一個頭餅刷!
我想知道你爲什麼會做這樣的事情?僅僅因爲寫了'b'兩次?性能?我認爲這些都不是深刻的原因。 – nemo
爲了簡潔/可讀性和性能,因爲在我的情況下獲得'b'實際上涉及取消引用三個屬性。 – HappyNomad
我很確定VM /編譯器會以任何方式優化它(取消引用以及指令),但是被證明是錯誤的會很有趣。而且有點混亂確實對可讀性沒有任何好處:D – nemo