2010-04-30 8 views

Odpowiedz

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

To może pomóc :)

+5

W 'if', użyłbym'! Args [i] .Equals (args [i - 1]) '. Pozwala to na użycie typów referencyjnych, które implementują 'IEqualityComparer'. Domyślnie '==' porównuje dla równości referencyjnej dla typów ref, a nie dla wartości bazowej. – spoulson

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

13 upvotes w 52 minut? To w rzeczywistości proste pytania, które przynoszą rep. –

+1

A krótkie, zwięzłe odpowiedzi? :-) – Zano

+3

@Joachim: Nie mów mi, że potrzebujesz 24 000 powtórzeń, aby zdać sobie sprawę, że ... ^^ – tanascius

5

Nie jest to niemożliwe, trzeba podzielić ją na oddzielne sprawozdania.

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

Powodzenia

13

w C#, operator równości (==) ocenia na bool tak 5 == 6 ocenia się false.

Porównanie 5 == 6 == 2 == 2 przełoży się

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

których ocenia się

((false == 2) == 2) 

które starają się porównywać bool z int. Tylko wtedy, gdybyś porównał wartości boolowskie w ten sposób, składnia byłaby ważna, ale prawdopodobnie nie zrobiłaby tego, co chcesz.

Sposobem na wielokrotne porównania jest to, co zaproponował @Joachim Sauer:

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

+1 za wyjaśnienie, dlaczego to nie działa w C# –

Powiązane problemy