C#中表达式总是为真

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。为什么?


2
请注意,它并没有说“result”总是为真 - 它说在Console.WriteLine(result)中的“result”始终为真。 - Joshua Honig
你不需要 && result。只需从条件中删除它即可。 - Robert Harvey
@Robert Harvey,您错了。只有在结果为真时,我才想显示控制台。 - Alexandre
2
那么Resharper正确地表达了你的意图,不是吗? - Robert Harvey
我不明白,这个问题为什么会被点赞?我有什么地方理解错了吗? - Maxim Gershkovich
3个回答

22

这是由于&& result这部分 - 只有当result为真时,您才会进入语句体。您怎么能预期通过resultfalse而进入那里呢?


1
不断被声望上限限制一定很糟心。 :) - Robert Harvey

4
ReSharper告诉你的是,如果你正在进行一些与代码质量和最佳实践相关的操作,那么它可以帮助你提高效率并减少错误。
Console.WriteLine(result);

你最好做

,涉及IT技术。
Console.WriteLine(true);

也就是说,在 if 中使用 result 的地方,同样可以使用 true。因为如果 result 是 false,那么你就无法到达 if 的主体部分。请注意,不要删除 HTML 标签。

2
无意义的陈述就是无意义,换句话说。 - Robert Harvey

2

因为当你解析if(true && false)时,它永远不会进入if语句体。这就是第一个示例中所解析的内容。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接