在C#中表达总是正确的

时间:2012-10-01 18:17:36

标签: c# .net

一个简单的C#代码

    bool result;
    if (bool.TryParse("false", out result) && result)
    {
        Console.WriteLine(result);
    }

    bool result;
    if (bool.TryParse("tRue", out result) && result)
    {
        Console.WriteLine(result);
    }

Resharper说Console.WriteLine(result)的结果始终是true。为什么呢?

3 个答案:

答案 0 :(得分:22)

这是由&& result部分引起的 - 如果result为真,你只会进入声明的正文。如果resultfalse,您如何预期到达那里?

答案 1 :(得分:4)

Reharper告诉你的是,如果你在做什么

Console.WriteLine(result);

你也可以这样做

Console.WriteLine(true);

也就是说,在if中使用结果的任何地方,你也可以使用true,因为如果result为假,你就不会到达if的主体。

答案 2 :(得分:2)

因为if(true && false)(这就是你得到的,当你解析解析时)永远不会进入if体。这就是你在第一个例子中解析的内容。