【问题标题】:Difference between if statement multiple condition and matching multiple valuesif语句多个条件和匹配多个值的区别
【发布时间】:2015-02-05 10:51:41
【问题描述】:

我正在做某事并发现了这个问题。

假设:

Result = KeyValuePair<bool,bool>;

我使用 if 语句根据 Result Values 做一些工作..

1:

if (Result.Key == false && Result.Value == true)
{
  //Do Some Work
}

2:

if (Result.Key == Result.Value == false)
{
  //Do Other Work
}

但我发现它同时使用 if Result.Key=false !!

这是为什么呢?

在 2 号中:Result.Value = true,所以我认为该条件不适用于这种情况。 第 2 条语句不是和 (Result.Key = false && Result.Value==false) 的意思或相同吗?!

为什么在 Result.Value==true 时使用它?

PS:我知道我可以使用 (Else If),但我只想知道发生了什么......

谢谢。

【问题讨论】:

  • 不确定你的意思。但是在情况 2 中,如果 Result.Valuetrue 并且 Result.Keyfalse 则将执行 if 块,因为条件与 Result.Key == (Result.Value == false) 相同。所以如果第二个条件是false(即Result.Valuetrue)那么如果Result.Keyfalse,那么整个条件是true。有意义吗?
  • 是的:) 确实有道理
  • 如果这是有道理的,那么请接受其中一个答案(两者都是一样的)。谢谢:)
  • 我会的,我只是想完全理解它

标签: c# if-statement multiple-conditions


【解决方案1】:
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

【讨论】:

  • 非常感谢您的帮助。
【解决方案2】:

这与if条件中的求值顺序有关。

Result.Key = 假。 结果.Value = true

第一次比较,Result.Key == Result.Value 将返回 false。 那么,第二次评价就会是假==假,即为真。

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

【讨论】:

  • 所以,它经历了几个阶段?!这是为什么?如果不是 bool,bool 比较怎么办? String,String for ex : A=Yes and B=No.. 如果我们使用 if(A==B==Yes) 会发生什么?也会用吗?
  • @Dr.Vision 再次相同。 (A==B=="Yes") 与 ((A==B)=="Yes") 相同。这导致将布尔值与字符串进行比较的尝试无效(false == "Yes"),因此无法编译。
  • 非常感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 2013-12-17
  • 2021-01-29
  • 1970-01-01
  • 2017-09-25
  • 1970-01-01
  • 2015-01-20
  • 2013-11-17
  • 2015-03-24
相关资源
最近更新 更多