2010-04-30 12 views

Respuesta

14
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 :)

+5

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

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

13 upvotes en 52 minutos? De hecho, son las preguntas fáciles que traen el representante. –

+1

Y las cortas respuestas concisas? :-) – Zano

+3

@Joachim: No me diga que necesitaba 24k rep para darse cuenta de que ... ^^ – tanascius

5

No, esto no es posible, hay que dividirlo en comunicados separados.

if(x == y && x == z) // now y == z 
{ 
} 

Buena suerte

13

En C#, un operador de igualdad (==) se evalúa como un modo bool5 == 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 
+0

+1 para explicar por qué no funciona en C# –

Cuestiones relacionadas