2015-10-08 10 views
5

गैर-तत्काल कक्षा बनाने के तरीके क्या हैं? एक तरीका यह एक सार वर्ग के रूप में घोषित कर रहा है। क्या क्लास कन्स्ट्रक्टर को निजी के रूप में बनाना संभव है? एक मुहरबंद वर्ग, गैर-तत्काल है? और, सी # में ऐसा करने के अन्य तरीके हैं?ऐसी कक्षा घोषित करने के तरीके क्या हैं जिन्हें तत्काल नहीं किया जा सकता है?

+1

क्या आप वर्ग के साथ क्या करना चाहते हैं? – Jay

+0

उत्तर = स्टेटिक वर्ग – MajkeloDev

+0

सार वर्ग, स्थैतिक वर्ग उन्हें तत्काल नहीं किया जा सकता – Dragon

उत्तर

7

एक वर्ग को सार या स्थिर के रूप में चिह्नित करना (वे पारस्परिक रूप से अनन्य हैं) केवल दो तरीके हैं। सभी कन्स्ट्रक्टरों को निजी रूप से चिह्नित करना कक्षा को अनइंस्टेसिटेबल नहीं बनाता है क्योंकि कक्षा अभी भी खुद का निर्माण कर सकती है, और अन्य प्रतिबिंब के माध्यम से ऐसा करने में सक्षम हो सकते हैं।

+0

एक मुहरबंद वर्ग है, गैर-तत्काल? – kakkarot

+0

@madmax मुहरबंद वर्ग गैर विरासत योग्य है। –

+0

नहीं, एक सीलबंद वर्ग विरासत में नहीं लिया जा सकता है। यह तत्कालता – kai

1

जैसा कि अन्य लोगों द्वारा उत्तर दिया गया है अमूर्त और स्थिर वर्गों को तत्काल नहीं किया जा सकता है, हालांकि निजी निर्माता के साथ एक वर्ग सार्वजनिक सदस्य समारोह का उपयोग करके किया जा सकता है। इस प्रकार singleton पैटर्न काम करता है

2

केवल static यहां पूर्ण समाधान की तरह दिखता है क्योंकि abstract कक्षा तब भी तत्काल हो सकती है जब उस से प्राप्त होने वाले वर्ग के उदाहरण को तुरंत चालू किया जाता है। परिदृश्य पर विचार करें:

abstract class A { } 

class B : A { } 

somewhere in code : 

B instance = new B(); // this creates instance of class A as well 

पीएस पहले मैं पर कि हालांकि abstract sealed रूप में अच्छी तरह से इस समस्या के लिए समाधान हो सकता है, लेकिन यह बहुत भावना इस तरह के एक निर्माण का उपयोग करने के लिए नहीं है, तो यह भी संकलन नहीं करता है:

Error 1 'A': an abstract class cannot be sealed or static D:\Projects\TEST\Testapp\Program.cs 15 27 ITT.Domain 
+0

मैं सहमत हूं। नेट में आप स्ट्रीम इंस्टेंस प्राप्त कर सकते हैं। बेशक यह हमेशा स्ट्रीम के सबक्लास का एक उदाहरण होगा। लेकिन धारा वर्ग के अंदर और स्ट्रीम क्लास के बाहर कोड के लिए उदाहरण अभी भी एक उदाहरण है। –

+0

अमूर्त मुहरबंद क्या है? क्या कोई समझा सकता है कि यह क्या है? – kakkarot

+0

अच्छा इसका उल्लेख है लेकिन अमूर्त मुहरबंद संभव नहीं है। –

0

आंतरिक कक्षाएं ही दिखाई देते हैं आपकी असेंबली के अंदर और इसलिए इस असेंबली के बाहर तत्काल नहीं किया जा सकता है।

लेकिन जहां तक ​​मुझे पता है, आप अभी भी प्रतिबिंब के माध्यम से एक उदाहरण बना सकते हैं। आप के रूप में उल्लेख किया ऊपर आप के रूप में सार यह घोषणा या एक सार विधि जोड़ सकता है के माध्यम से ReflectionPermission Class

प्रतिबिंब निष्क्रिय कर सकते हैं।

यदि आप सिर्फ एक अनुबंध घोषित करना चाहते हैं, तो आप एक इंटरफ़ेस का उपयोग कर सकते हैं, लेकिन यह बिल्कुल कक्षा नहीं है।

सील मतलब है कि आप इस वर्ग

सिंगलटन कक्षाएं केवल एक बार आवेदन प्रति बनाया जा सकता है के वारिस नहीं कर सकते हैं singleton

देख sealed (C# reference)

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

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