Can C# mark and check when a class implements interface methods? -
इस सवाल का पहले से ही एक उत्तर है: < / P>
- 4 जवाब
जब एक बेस क्लास में एक
वर्चुअल विधि, उप वर्ग में अधिक व्युत्पन्न संस्करण जोड़ने के लिए, हमें
override का उपयोग करना होगा।
AFAICT, यह दो प्रयोजनों में कार्य करता है:
- हम किसी आधार विधि से अधिक गलती नहीं करते हैं
- यदि हम विधि नाम गलत तरीके से लिखते हैं, तो जब हमें चाहें ओवरराइड करने के लिए, हमें एक त्रुटि मिलती है (, दाएं ?)
हालांकि, मेरे निराशा को लगता है कि (VS2010 / .NET4 में) यह उपयोग नहीं करना संभव है
override एक इंटरफ़ेस विधि को कार्यान्वित करते समय ।
जाहिर है, पहला गोली एक गैर मुद्दा है, लेकिन
ओवरराइड कीवर्ड ने एक अच्छा सरल दस्तावेज के रूप में काम किया होगा और जांच लें कि इंटरफ़ेस तरीकों वास्तव में ये हैं जो कि
ove के रूप में चिह्नित हैं Rride ।
तो, जब एक वर्ग के कार्यान्वयन को देखे, तो यह संकेत देने के लिए अन्य
// टिप्पणी से कोई भी तरीका है विधि किसी विशिष्ट इंटरफेस की विधि को लागू करता है?
मेरा मानना है कि आपकी चिंता के बारे में सब कुछ इस वाक्य के द्वारा संक्षेपित है :
लेकिन overridekeyword एक अच्छा सरल प्रलेखन के रूप में काम करता है और जांचता है कि इंटरफ़ेस पद्धतियां वास्तव में ये हैं जो ओवरराइड के रूप में चिह्नित हैं।
के बारे में सोचें क्या एक इंटरफ़ेस है, और एक कार्यान्वयनकर्ता क्या है कोई क्लास इंटरफ़ेस लागू या लागू नहीं कर सकता है, और एक इंटरफ़ेस के रूप में एक ही हस्ताक्षर के साथ एक विधि को अभी भी लागू कर सकता है।
उदाहरण के लिए, एक वर्ग
कैलकुलेटर लागू हो सकता है।
ICalculator और
कैलकुलेटर लागू करता है
जोड़ (int, int) । लेकिन
कैलकुलेटर
आईसील्यूलेटर लागू नहीं कर सका और यह एक
जोड़ना (इंट, इंट) वैसे भी कर सकता है।
कैसे करें आप दोनों मामलों में अंतर?
ओवरराइड या नहीं का उपयोग कब करें
एक अन्य बिंदु: यह एक वर्ग को लागू करने और इंटरफ़ेस को पूरा करने के लिए अच्छा है, और इसे विरासत कॉलन के बाद वर्ग हस्ताक्षर से निकालने से इसे रोकना बंद है ।
दूसरी ओर, यह सोचें कि दस्तावेज़ीकरण आप कम्पाइलर त्रुटि कह रहे हैं कि
कैलक्यूलेटर लागू इंटरफ़ेस
ICalculator लेकिन यह
ICalculator द्वारा परिभाषित एक या अधिक सदस्यों को घोषित और लागू नहीं करता है यदि कोड संकलित होता है, तो आपको परवाह नहीं करनी चाहिए कि कोई सदस्य किसी अन्य या अन्य इंटरफेस का है या नहीं। आप जानते हैं कि कुछ सदस्य कुछ अंतरफलक के कार्यान्वयन कर रहे हैं, क्योंकि आपका
कैलक्यूलेटर हस्ताक्षर इस तरह दिखेगा:
सार्वजनिक वर्ग कैलक्यूलेटर: आईसील्यूलेटर ।
इसके अलावा, ऐसा मामला जहां एक कार्यान्वयन सदस्य इसे एक इंटरफेस से अधिक पूरा करने के लिए लागू करता है क्या आपके कार्यान्वयन को ओवरराइड कर रहा है?
override कीवर्ड से बचने से यह अधिक भ्रामक नहीं है?
Comments
Post a Comment