代码之家  ›  专栏  ›  技术社区  ›  GurdeepS

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

c#
  •  0
  • GurdeepS  · 技术社区  · 15 年前

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

    这段代码是如何执行的?

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

    如果IsXyz解析为true,则使用!接线员,这个代码怎么解释?因为RHS说的是真的。这会是:

    1) False for LHS | True for RHS==False(根据我的真值表)

    假设bool解析为true,我可以想象理解此代码的几种wierd方法。编译器的官方方法是什么?

    4 回复  |  直到 15 年前
        1
  •  2
  •   Joe    15 年前

    根据C#运算符的优先级,应将其计算为

    ((!测试.IsXyz)==真)

    因此假(左)和真(右)。

        2
  •  1
  •   CesarGon    15 年前

    计算结果为false。

    换句话说,代码:

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

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

        3
  •  1
  •   zebrabox    15 年前

    该语句更冗长,但同样有效,相当于

    if (!Test.IsXyz)
    {
    }
    

    如果结果为假,那么条件的结果为真。
    如果结果为真,则条件的结果为假。

        4
  •  0
  •   Simeon Pilgrim    15 年前

    订单在这里并不重要

    像你一样!(L==R)或(!五十) 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