2010-04-30 34 views

Trả lời

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

này có thể giúp :)

+5

Trong 'if', tôi sẽ sử dụng'! Args [i] .Equals (args [i - 1]) '. Điều này cho phép sử dụng các kiểu tham chiếu thực hiện 'IEqualityComparer'. Theo mặc định '==' so sánh cho bình đẳng tham chiếu trên các kiểu ref, không phải giá trị cơ bản của nó. – spoulson

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

13 upvotes trong vài phút 52? Đó là trong thực tế, những câu hỏi dễ dàng mang lại đại diện. –

+1

Và câu trả lời ngắn gọn ngắn gọn? :-) – Zano

+3

@ Joachim: Đừng nói với tôi rằng bạn cần đại diện 24k để nhận ra rằng ... ^^ – tanascius

5

Không có điều này là không thể, bạn phải chia nó thành báo cáo riêng biệt.

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

Chúc may mắn

13

Trong C#, một nhà điều hành bình đẳng (==) để đánh giá một bool nên 5 == 6 đánh giá để false.

Việc so sánh 5 == 6 == 2 == 2 sẽ dịch để

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

mà đánh giá để

((false == 2) == 2) 

mà sẽ cố gắng để so sánh một bool với một int. Chỉ khi bạn so sánh các giá trị boolean theo cách này thì cú pháp sẽ hợp lệ, nhưng có lẽ không làm những gì bạn muốn.

Cách làm nhiều so sánh là gì @Joachim Sauer gợi ý:

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

+1 để giải thích lý do tại sao nó không hoạt động trong C# –

Các vấn đề liên quan