2010-02-11 14 views
7

मेरे पास System.Net.IPAddress के लिए एक एक्सटेंशन क्लास है और मैं बाइनरी ऑपरेटरों >, <, == को अधिभारित करना चाहता था लेकिन संकलक मुझे बता रहा है कि मैं उन ऑपरेटरों को एक स्थिर वर्ग के अंदर अधिभारित नहीं कर सकता, जो मेरे पास मेरे अन्य एक्सटेंशन के लिए होना चाहिए तरीकों। क्या इसके लिए कोई विशेष कारण है?स्थिर वर्ग के अंदर ऑपरेटरों को अधिभारित क्यों नहीं किया जा सकता है?

धन्यवाद।

+0

हमने सी # 4 में "एक्सटेंशन ऑपरेटर" जोड़ने पर विचार किया, लेकिन वे बजट में फिट नहीं हुए और कट गए। उम्मीद है कि हम उन्हें भाषा के एक अनुमानित भविष्य के संस्करण में लाएंगे। –

+0

@Eric: मुझे आशा है कि आप उन्हें "वास्तविक" भविष्य के संस्करण में लाएंगे! :) मैंने कार्यात्मक प्रोग्रामिंग के बारे में सुना है, लेकिन कल्पित प्रोग्रामिंग नहीं! क्या यह एक नया प्रतिमान है? –

+0

@ क्रिस ड्यूनवे: हाँ, अभी के लिए इसे "क्वांटम प्रोग्रामिंग" के रूप में जाना जाता है। – jason

उत्तर

12

ऑपरेटरों को उस प्रकार के उदाहरण से संबंधित होना चाहिए जिसमें उन्हें घोषित किया गया है। चूंकि आपके पास स्थैतिक वर्ग के उदाहरण नहीं हो सकते हैं, इसलिए ऑपरेटरों को परिभाषित करने का कोई मतलब नहीं है।

.NET में कोई "एक्सटेंशन ऑपरेटर" नहीं हैं।

अपने उद्देश्यों के लिए

, लागू करने पर विचार एक IComparer<T> और/या IEqualityComparer<T> (== को शामिल किया गया है, या आप पराक्रम सिर्फ 0 लौटने की तुलना का उपयोग करें (< और > को शामिल किया गया), यह निर्भर करता है कि क्या आप समझते हैं "बराबर सॉर्ट करता" और "बराबर" जैसे सामान)।

+0

आपने जॉन स्कीट को अपना जवाब –

+0

@ जैन भी हटा दिया - ठीक है, मेरा 50 सेकंड पहले भी था; -पी –

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