if语句多条件和匹配多个值之间的区别

时间:2014-12-07 19:31:53

标签: c# if-statement multiple-conditions

我正在研究某些事情并发现了这个问题。

让我们说:

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),但我只是想知道发生了什么......

感谢。

2 个答案:

答案 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,这是真的。

因此,在这种情况下,将执行该块。