【发布时间】:2025-12-07 03:10:01
【问题描述】:
有没有一种快速的方法来比较 C# 中多个值的相等性?
something like:
if (5==6==2==2){
//do something
}
谢谢
【问题讨论】:
标签: c# comparison operators equality
有没有一种快速的方法来比较 C# 中多个值的相等性?
something like:
if (5==6==2==2){
//do something
}
谢谢
【问题讨论】:
标签: c# comparison operators equality
if (a == b && b == c && c == d) {
// do something
}
【讨论】:
在 C# 中,相等运算符 (==) 的计算结果为 bool,因此 5 == 6 的计算结果为 false。
比较 5 == 6 == 2 == 2 将转换为
(((5 == 6) == 2) == 2)
计算结果为
((false == 2) == 2)
它将尝试将bool与int进行比较。仅当您以这种方式比较布尔值时,语法才有效,但可能不会做您想要的。
进行多重比较的方法是@Joachim Sauer 建议的:
a == b && b == c && c == d
【讨论】:
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))
这可能会有所帮助:)
【讨论】:
if 中,我会使用!args[i].Equals(args[i - 1])。这允许使用实现IEqualityComparer 的引用类型。默认情况下,== 比较 ref 类型的引用相等性,而不是其基础值。
不,这是不可能的,您必须将其拆分为单独的语句。
if(x == y && x == z) // now y == z
{
}
祝你好运
【讨论】: