c# - Why doesn't IEnumerable<T>.Max constrain T to be IComparable? -
अगर कोई एमएक्स ()
विस्तार विधि को एक IEnumerable & lt; T & gt; पर कॉल करता है।
, और भीतर वाले ऑब्जेक्ट्स को IComparable
को लागू नहीं करते हैं, एक हो जाता है System.ArgumentException: कम से कम एक ऑब्जेक्ट को IComparable को लागू करना चाहिए।
क्यों अधिकतम
न करें और इसी तरह के तरीकों को T
को कार्यान्वित करने के लिए IComparable
को रोक दें, ताकि यह समस्या समय के बजाय संकलन समय पर पकड़ी जा सके?
तुलना ... मजेदार हैं सबसे पहले, आपको IComparable & lt; T & gt;
या IComparable
का विकल्प मिलता है - जो आप चुनेंगे? वर्तमान में ( comparer & lt; T & gt; डिफॉल्ट
के माध्यम से) यह दोनों का समर्थन करता है, लेकिन "यह या कोई भी" सामान्य बाधा नहीं है।
नल योग्य & lt; T & gt;
का मुद्दा; इसने "उठाया" तुलना की है, इसलिए यह तुलनीय है या नहीं यह T
पर निर्भर करता है; लेकिन फिर से, तुलनार & lt; T & gt; डीफ़ॉल्ट
हमारे लिए इस के साथ ( नल योग्य & lt; T & gt;
लागू नहीं IComparable
और न ही IComparable & lt; T & gt; ;
)।
प्लस; यह सामान्य बाधा प्रचार पर बचाता है; जैसे ही आपको लाइब्रेरी कोड में इस तरह की एक बाधा है, यह सभी अपस्ट्रीम कॉलिंग कोड को जल्द ही संक्रमित कर देता है, जिससे यह एक कठिन स्लॉग बनाता है।
Comments
Post a Comment