2010-04-30 3 views

risposta

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

Questo potrebbe aiutare :)

+5

In 'if', userei'! Args [i] .Equals (args [i - 1]) '. Ciò consente l'uso di tipi di riferimento che implementano 'IEqualityComparer'. Di default '==' confronta per l'uguaglianza di riferimento sui tipi ref, non il suo valore sottostante. – spoulson

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

13 upvotes in 52 minuti? In realtà sono le domande facili che portano il rappresentante. –

+1

E le risposte brevi e concise? :-) – Zano

+3

@Joachim: Non dirmi che avevi bisogno di un rappresentante 24k per capire che ... ^^ – tanascius

5

No questo non è possibile, è necessario dividerlo in prospetti separati.

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

Buona fortuna

13

In C#, un operatore di uguaglianza (==) restituisce un bool così 5 == 6 viene valutato come false.

Il confronto 5 == 6 == 2 == 2 si tradurrebbe in

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

che valuta a

((false == 2) == 2) 

che cercare di confrontare un bool con una int. Solo se si confrontassero i valori booleani in questo modo la sintassi sarebbe valida, ma probabilmente non fare ciò che si desidera.

Il modo per farlo è quello di confronto multiplo @Joachim Sauer suggerito:

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

+1 per spiegare perché non funziona in C# –