我正在研究某些事情并发现了这个问题。
让我们说:
Result = KeyValuePair<bool,bool>;
我使用if语句根据结果值做一些工作..
1:
if (Result.Key == false && Result.Value == true)
{
//Do Some Work
}
2:
if (Result.Key == Result.Value == false)
{
//Do Other Work
}
但我发现如果Result.Key = false !!它会同时使用两者。
为什么?
数字2中的:Result.Value = true,所以我认为在这种情况下条件不适用。 不是第2号语句是指或与(Result.Key = false&amp;&amp; Result.Value == false)相同?!
为什么在Result.Value == true时使用它?
PS:我知道我可以使用(Else If),但我只是想知道发生了什么......感谢。
答案 0 :(得分:2)
if (Result.Key == Result.Value == false)
{
//Do Other Work
}
这与
相同if ((Result.Key == Result.Value) == false)
{
//Do Other Work
}
与
相同if (Result.Key != Result.Value)
{
//Do Other Work
}
除非我感到困惑,(Result.Key == Result.Value == false)
实际上与(Result.Key == (Result.Value == false))
相同,在这种情况下仍为Result.Key != Result.Value
。这令人困惑,所以请永远不要将平等运营商联系起来。它不会按照你期望的方式工作。
您可以在此处详细查看规则:http://msdn.microsoft.com/en-us/library/126fe14k.aspx
答案 1 :(得分:1)
这与if条件中的评估顺序有关。
Result.Key = false。 Result.Value = true
第一个比较,Result.Key == Result.Value将返回false。 然后,第二次评估将为false == false,这是真的。
因此,在这种情况下,将执行该块。