我看到下面的代码,这让每个人都感到震惊。这是如何解释?
该代码是如何执行的?
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