2010-04-30 27 views

उत्तर

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

यह 52 मिनट में :)

+5

में काम नहीं करता है 'if' में, मैं 'args [i] .quals (args [i - 1]) का उपयोग करता हूं। यह संदर्भ प्रकारों का उपयोग करने की अनुमति देता है जो 'IEqualityComparer' को लागू करते हैं। डिफ़ॉल्ट रूप से '==' रेफरी प्रकारों पर संदर्भ समानता के लिए तुलना करता है, इसके अंतर्निहित मूल्य नहीं। – spoulson

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

13 upvotes मदद कर सकता है? वास्तव में यह आसान सवाल है जो प्रतिनिधि को लाता है। –

+1

और संक्षिप्त संक्षिप्त उत्तर? :-) – Zano

+3

@ जोचिम: मुझे यह न बताएं कि आपको 24k प्रतिनिधि की आवश्यकता है ताकि यह महसूस किया जा सके कि ... ^^ – tanascius

5

नहीं यह संभव नहीं है, तो आप इसे अलग बयानों में विभाजित किया है।

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

गुड लक

1

सी # का उपयोग कर यह करने के लिए कोई सीधा तरीका नहीं है, लेकिन आप कुछ सहायक वर्ग के साथ जा सकते हैं। इस VB.NET विषय इस समस्या VB.Net: test multiple values for equality?

13

सी # में करने के लिए समर्पित की जाँच करें, एक समानता ऑपरेटर (==) एक bool का मूल्यांकन तो 5 == 6false मूल्यांकन करता है।

तुलना 5 == 6 == 2 == 2 का अनुवाद

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

को जो

((false == 2) == 2) 

जो एक int के साथ एक bool तुलना करने की कोशिश करेगा का मूल्यांकन होगा। केवल अगर आप बूलियन मानों की तुलना करेंगे तो इस तरह वाक्यविन्यास मान्य होगा, लेकिन शायद आप जो चाहते हैं वह न करें।

तरह से कई तुलना क्या करना है @Joachim सौएर सुझाव दिया है:

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

+1 यह समझाने के लिए कि क्यों यह सी # –

संबंधित मुद्दे