¿Existe alguna manera rápida de comparar la igualdad de más de un valor en C#?¿Es esto posible de alguna manera en C#: if (a == b == c == d) {...}
something like:
if (5==6==2==2){
//do something
}
Gracias
¿Existe alguna manera rápida de comparar la igualdad de más de un valor en C#?¿Es esto posible de alguna manera en C#: if (a == b == c == d) {...}
something like:
if (5==6==2==2){
//do something
}
Gracias
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))
Esto podría ayudar :)
No, esto no es posible, hay que dividirlo en comunicados separados.
if(x == y && x == z) // now y == z
{
}
Buena suerte
No hay forma directa de hacerlo usando C#, pero se puede ir con un poco de clase de ayuda. Salida VB.NET este tema dedicado a este problema VB.Net: test multiple values for equality?
En C#, un operador de igualdad (==
) se evalúa como un modo bool
5 == 6
evalúa a false
.
La comparación 5 == 6 == 2 == 2
se traduciría en
(((5 == 6) == 2) == 2)
que evalúa a
((false == 2) == 2)
que tratar de comparar un bool
con un int
. Solo si comparas valores booleanos de esta forma, la sintaxis sería válida, pero probablemente no harías lo que deseas.
La manera de hacer la comparación múltiple es lo que sugiere @Joachim Sauer:
a == b && b == c && c == d
+1 para explicar por qué no funciona en C# –
En el 'if', yo usaría'! Args [i] .Equals (args [i - 1]) '. Esto permite el uso de tipos de referencia que implementan 'IEqualityComparer'. Por defecto '==' se compara para igualdad de referencia en tipos de ref, no su valor subyacente. – spoulson