这个if语句是如何解释的?

时间:2009-12-01 23:36:13

标签: c#

我看到下面的代码,震惊了所有人。

这段代码是如何执行的?

if (!Test.IsXyz == true)
{ }

如果IsXyz解析为true,但随后变为false!运算符,这段代码是如何解释的?因为RHS声明是真的。这会是:

1)LHS为假对于RHS是真的==假(从我的真相表日)

假设bool解析为true,我可以想象这个代码可以理解的几种奇怪方式。编译器的官方方式是什么?

4 个答案:

答案 0 :(得分:2)

根据C#运算符优先级,应将其评估为

((!Test.IsXyz)== true)

因此为假(LHS)和True(RHS)。

答案 1 :(得分:1)

评估为假。

换句话说,代码:

var Test = new { IsXyz = true };

if (!Test.IsXyz == true)
{
    Console.WriteLine("TRUE");
}

不会在屏幕上打印任何内容。

答案 2 :(得分:1)

该陈述更详细,但同样有效,等同于

if (!Test.IsXyz)
{
}

因此,如果结果为false,则条件的结果为真 如果结果为true,则条件的结果为false。

答案 3 :(得分:0)

订单剂量在这里并不重要

因为你有以太!(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