C# if语句多个条件和匹配多个值之间的差异

C# if语句多个条件和匹配多个值之间的差异,c#,if-statement,multiple-conditions,C#,If Statement,Multiple Conditions,我正在做一些事情,发现了这个问题 比如说: Result = KeyValuePair<bool,bool>; 2: 但是我发现如果Result.Key=false,它会同时使用这两种方法 为什么呢 在第2项中:Result.Value=true,因此我认为该条件不适用于这种情况。 数字2语句的意思是否与(Result.Key=false&&Result.Value==false)相同 为什么在Result.Value==true时使用它 PS:我知道我可以用(如果有的话),但我只

我正在做一些事情,发现了这个问题

比如说:

Result = KeyValuePair<bool,bool>;
2:

但是我发现如果Result.Key=false,它会同时使用这两种方法

为什么呢

在第2项中:Result.Value=true,因此我认为该条件不适用于这种情况。 数字2语句的意思是否与(Result.Key=false&&Result.Value==false)相同

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

PS:我知道我可以用(如果有的话),但我只想知道发生了什么


谢谢。

这与if条件下的评估顺序有关

Result.Key=false。 Result.Value=true

第一次比较Result.Key==Result.Value将返回false。 然后,第二个计算结果将为false==false,即true

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

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!=结果.值
。这很令人困惑,所以请永远不要链接相等运算符。它不会按你期望的方式工作


您可以在此处详细查看规则:

不确定您的意思。但是在情况2中,如果
Result.Value
true
Result.Key
false
,则将执行if块,因为条件与
Result.Key==(Result.Value==false)
相同。因此,如果第二个条件为
false
(即
Result.Value
true
),则整个条件为
true
如果
Result.Key
false
。有意义吗?是的:)有意义如果这有意义,请接受其中一个答案(两者都是相同的)。谢谢:)我当然会的,我只是想完全理解它。所以,它是分阶段的?!为什么呢?如果不是布尔,布尔比较呢?字符串,例如:A=是和B=否的字符串。。如果我们使用if(A==B==Yes),会发生什么?也会使用吗?@Dr.Vision同样的。(A==B==“是”)与((A==B==“是”)相同。这导致将布尔值与字符串进行比较的尝试无效(false==“Yes”),因此无法编译。非常感谢您的帮助。非常感谢您的帮助。
if ((Result.Key == Result.Value) == false)
{
   //Do Other Work
}
if (Result.Key != Result.Value)
{
   //Do Other Work
}