2010-04-30 8 views

Répondre

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

Cela pourrait aider :)

+5

Dans le 'if', j'utiliserais'! Args [i] .Equals (args [i - 1]) '. Cela permet l'utilisation de types de référence implémentant 'IEqualityComparer'. Par défaut '==' compare pour l'égalité de référence sur les types ref, pas sa valeur sous-jacente. – spoulson

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

13 upvotes en 52 minutes? C'est en fait les questions faciles qui amènent le représentant. –

+1

Et les réponses concises courtes? :-) – Zano

+3

@Joachim: Ne me dites pas que vous aviez besoin de 24k rep pour vous rendre compte que ... ^^ – tanascius

5

Non, ce n'est pas possible, vous devez scinder en déclarations séparées.

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

Bonne chance

13

En C#, un opérateur d'égalité (==) évalue à un bool si 5 == 6 est évaluée à false.

La comparaison 5 == 6 == 2 == 2 se traduirait par

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

qui évalue à

((false == 2) == 2) 

qui essaierait de comparer un bool avec un int. Ce n'est que si vous comparez les valeurs booléennes de cette façon que la syntaxe serait valide, mais probablement ne pas faire ce que vous voulez.

La façon de faire la comparaison multiple est ce que @Joachim Sauer suggéré:

a == b && b == c && c == d 
+0

+1 pour expliquer pourquoi cela ne fonctionne pas dans C# –