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
}