这在C#中是否有可能:if(a == b == c == d){...}

时间:2010-04-30 09:01:18

标签: c# comparison operators equality

有没有一种快速方法来比较C#中多个值的相等性?

something like:

if (5==6==2==2){

//do something

}

由于

5 个答案:

答案 0 :(得分:29)

if (a == b && b == c && c == d) {
    // do something
}

答案 1 :(得分:15)

public static class Common {
    public static bool AllAreEqual<T>(params T[] args)
    {
        if (args != null && args.Length > 1)
        {
            for (int i = 1; i < args.Length; i++)
            {
                if (args[i] != args[i - 1]) return false;
            }
        }

        return true;
    } 
}

...

if (Common.AllAreEqual<int>(a, b, c, d, e, f, g)) 

这有助于:)

答案 2 :(得分:13)

在C#中,等于运算符(==)的计算结果为bool,因此5 == 6的计算结果为false

比较5 == 6 == 2 == 2会转化为

(((5 == 6) == 2) == 2)

评估为

((false == 2) == 2)

会尝试将boolint进行比较。只有当你以这种方式比较布尔值时,语法才有效,但可能不会做你想要的。

进行多重比较的方法是@Joachim Sauer所建议的:

 a == b && b == c && c == d

答案 3 :(得分:5)

这不可能,您必须将其拆分为单独的语句。

if(x == y && x == z) // now y == z
{
}
祝你好运

答案 4 :(得分:1)

使用C#没有直接的方法,但你可以使用一些帮助类。 查看专门针对此问题的VB.Net: test multiple values for equality?

的VB.NET主题