6

一个简单的 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。为什么?

4

3 回答 3

22

这是由于部分原因 - 如果是真的&& result,你只会进入声明的主体。result你如何期待通过存在进入那里的任何result方式false

于 2012-10-01T18:18:33.623 回答
4

Reharper 告诉你的是,如果你正在做

Console.WriteLine(result);

你也可以

Console.WriteLine(true);

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

于 2012-10-01T18:23:47.243 回答
2

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

于 2012-10-01T18:28:15.543 回答