我看到下面的代碼,這讓每個人都感到震驚。這是如何解釋?
該代碼是如何執行的?
if (!Test.IsXyz == true)
{ }
如果IsXyz解析爲真,但隨後使用!這個代碼是如何解釋的?因爲RHS是正確的。這是:
1)假LHS | True for RHS == False(From my truth table days)
假設bool解析爲真,我可以想象這種代碼會被理解的幾種奇怪的方法。編譯器的官方途徑是什麼?
我看到下面的代碼,這讓每個人都感到震驚。這是如何解釋?
該代碼是如何執行的?
if (!Test.IsXyz == true)
{ }
如果IsXyz解析爲真,但隨後使用!這個代碼是如何解釋的?因爲RHS是正確的。這是:
1)假LHS | True for RHS == False(From my truth table days)
假設bool解析爲真,我可以想象這種代碼會被理解的幾種奇怪的方法。編譯器的官方途徑是什麼?
根據C#運算符優先級,這應該作爲
((!Test.IsXyz)==真)
因此假(左)和True(RHS)進行評估。
最後評估爲假:)所以我有正確的想法... – dotnetdev 2009-12-02 00:12:37
聲明是一個更詳細的,雖然同樣有效,相當於
if (!Test.IsXyz)
{
}
所以,如果結果若爲假,則該條件的結果是正確的。
如果結果爲真,則條件的結果爲false。
訂購劑量沒有真正的問題在這裏
,你有乙醚!(L == R)或(!L)== R,但作爲等於可以被視爲同一件事
L = T : !(T == T) -> !(T) -> F or (!T) == T -> F == T -> F
和
L = F : !(F == T) -> !(F) -> T or (!F) == T -> T == T -> T
這可能是點以外,但真的沒有理由比較布爾值與true或false。只要做'if(!Test.IsXyz)'。 – 2009-12-01 23:42:31
我知道。我也是這麼做的。從來沒有需要正確==,但這是另一個寫這個的小輩。 – dotnetdev 2009-12-02 00:11:23