This MSDN article बताता है कि स्थैतिक वर्गों को मुहरबंद और अमूर्त घोषित किया जाना चाहिए। मैं इस धारणा के तहत था कि स्थिर वर्ग पहले ही बंद कर दिए गए थे। आपको एक स्थिर वर्ग को मुहरबंद घोषित करने की भी आवश्यकता क्यों होगी?सी # में स्थिर वर्गों को सीलबंद और सार के रूप में घोषित क्यों करें?
उत्तर
मुझे लगता है कि लेख से उचित सा है:
"स्थैतिक कक्षाओं की घोषणा करो के रूप में सील और अमूर्त है, और अगर आपके प्रोग्रामिंग भाषा है करता निर्मित स्थिर कक्षाओं के लिए समर्थन नहीं एक निजी उदाहरण निर्माता, जोड़ने "
याद रखें, .NET ढांचा कई अलग-अलग भाषाओं का समर्थन करता है।
ऐसा लगता है कि एक वर्ग को एक निजी कन्स्ट्रक्टर के साथ मुहरबंद और अमूर्त के रूप में घोषित करना स्थिर वर्ग का विकल्प है यदि भाषा स्थैतिक वर्गों का समर्थन नहीं करती है।
सी # v1 कक्षा पर 'स्थैतिक' कीवर्ड की अनुमति नहीं देता था। इसलिए यदि आपके पास केवल स्थिर विधियों वाला वर्ग है, तो इसे 'मुहरबंद', 'सार' घोषित करने और कन्स्ट्रक्टर निजी बनाने का सुझाव दिया गया था। इसका मतलब है कि कोई भी आपकी कक्षा को तुरंत चालू नहीं कर सकता है या इससे प्राप्त करने का प्रयास नहीं कर सकता है। [यह उस वर्ग से प्राप्त करने के लिए समझ में नहीं आता है जिसमें केवल स्थिर विधियां हैं।]
सी # v2 ने कक्षा पर स्थिर कीवर्ड की अनुमति दी है, इसलिए आपको सही उपयोग को लागू करने के लिए उपरोक्त चाल का उपयोग करने की आवश्यकता नहीं है।
abstract
के रूप में कक्षा को चिह्नित करने के प्रभावों में से एक यह है कि इसे तत्काल नहीं किया जा सकता है।sealed
के रूप में कक्षा को चिह्नित करने के प्रभावों में से एक यह है कि विरासत में नहीं लिया जा सकता है।
यही वास्तव में static
वर्ग वास्तव में है - एक वर्ग जिसे तत्काल नहीं किया जा सकता है और जिसे विरासत में नहीं लिया जा सकता है।
तो लेख यह नहीं बताता है कि आपको अपनी स्थिर कक्षाओं को abstract
और sealed
के रूप में चिह्नित करना चाहिए, लेकिन यह तरीका है कि आईएल में स्थिर वर्गों का प्रतिनिधित्व कैसे किया जाता है।
(अन्य भाषाओं क्योंकि एक abstract sealed
वर्ग शब्दार्थ भावना का एक बहुत नहीं है, हालांकि मैं यह शक है, अगर वे एक static
कीवर्ड की जरूरत नहीं है आप ऐसा करने की अनुमति कर सकते हैं।)
भविष्य के यात्रियों के लिए जोड़ना चाहते हैं कि 4.0 आईएल में, स्थिर का उपयोग करके, आपको'class Private auto ansi sealed 'जैसे कुछ मिलता है। तो हाँ उसका जवाब * क्यों * है। सी # में स्थिर के साथ यह किसी भी डिफ़ॉल्ट कन्स्ट्रक्टर को हटा देता है जो आईएल में आपके लिए जेनरेट किया गया था क्योंकि सी # में इसे विरासत में नहीं मिला है। तो सी # में स्थैतिक 'पसंदीदा' है, बस उपर्युक्त उत्तरों में से कुछ को पूरा करें। – Celess
- 1. सी #, विधियों जैसे 'स्थिर सार' लागू करें
- 2. सी # में इंडेक्सर्स को एक सार सदस्य के रूप में घोषित करने की कोई संभावना है?
- 3. कोई जावा इंटरफ़ेस विधि को सार के रूप में क्यों घोषित करेगा?
- 4. स्थिर वर्गों में केवल स्थिर सदस्य क्यों हो सकते हैं?
- 5. सी # सार वर्ग स्थिर क्षेत्र विरासत
- 6. सी ++ 11 - गैर-स्थिर डेटा सदस्यों को 'ऑटो' के रूप में घोषित करना
- 7. मैं के रूप में पैटर्न वस्तु घोषित करना चाहिए स्थिर
- 8. एक इंटरफेस को अमूर्त घोषित क्यों करें?
- 9. सी में स्थिर और सी ++ में स्थिर के बीच अंतर ??
- 10. इंटरफेस को सीलबंद के रूप में चिह्नित करने में सक्षम क्यों नहीं हैं?
- 11. संपत्ति को वस्तु के रूप में घोषित करें?
- 12. स्थिर सार स्ट्रिंग संपत्ति
- 13. सी ++/सीएलआई: मैं सी ++/सीएलआई में सार (सी #) कक्षा और विधि कैसे घोषित करूं?
- 14. स्थिर वर्गों में विनाशक क्यों नहीं हो सकते हैं?
- 15. सी # स्थिर वर्ग क्यों उपयोग करें?
- 16. क्यों सीलबंद वर्गों को सामान्य प्रकार की बाधाओं की अनुमति नहीं है?
- 17. सी # (यानी अभिभावक वर्गों के उन लोगों) में सभी स्थिर रचनाकार क्यों नहीं बुलाए जाते हैं?
- 18. स्थिर वर्गों में सी # एक्सटेंशन विधियों को क्यों परिभाषित किया जाना चाहिए?
- 19. एंड्रॉइड स्थिर वर्गों को पसंद क्यों करता है
- 20. सी ++ सार क्लास के रूप में std :: मानचित्र कुंजी
- 21. सी # इंटरफ़ेस विधियों को सार या वर्चुअल घोषित क्यों नहीं किया जाता है?
- 22. HttpContext.Current स्थिर वर्गों में उपयोग किया गया
- 23. क्या सी ++ कक्षा में वर्चुअल स्थिर स्थिर मान घोषित करना संभव है?
- 24. सी ++ में 'रेफरी' और 'सीलबंद' कीवर्ड क्या हैं?
- 25. System.in को शून्य के बजाय nullInputStream() के रूप में क्यों घोषित किया गया है?
- 26. एक अग्रेषित घोषित वर्ग के सदस्य-फ़ंक्शन को मित्र के रूप में घोषित करें
- 27. सी # में पुनर्रचना सार वर्ग
- 28. मुख्य रूप से फ़ंक्शन को फिर से घोषित क्यों करें?
- 29. जावा में सार कक्षाएं और विधियां, विरासत
- 30. क्या मुझे जैक्सन के ऑब्जेक्टमैपर को स्थिर क्षेत्र के रूप में घोषित करना चाहिए?
वाक्य का वह भाग सी # –
@ हेनकहोल्टरमैन और वीबी.नेट की तुलना में अन्य भाषाओं को स्पष्ट रूप से संदर्भित करता है, क्योंकि MustInherit और NotInheritable एक साथ उपयोग नहीं किया जा सकता है। –