2012-11-06 18 views
9

मैंने इसकी बहुत खोज की, लेकिन कोई भी जवाब स्पष्ट नहीं है (कम से कम मेरे लिए!)। अब मैं इस प्रश्न को SO में डाल रहा हूं, क्योंकि मेरा मानना ​​है कि मुझे कहीं और अधिक स्पष्ट उत्तर नहीं मिल सकता है।नेट बनाम स्टेटिक कन्स्ट्रक्टर .Net

मुझे अपनी कक्षा में निजी/स्थैतिक कन्स्ट्रक्टर का उपयोग कब करना चाहिए?

मैं सामान्य उत्तरों से परेशान हूं, इसलिए कृपया इन रचनाकारों का उपयोग करने के कुछ वास्तविक समय के उदाहरणों और फायदे/नुकसान के साथ मेरी सहायता करें।

+4

निजी कन्स्ट्रक्टर - यदि आप नहीं चाहते हैं कि आपकी वस्तु वर्तमान कक्षा के बाहर से रचनात्मक हो। स्टेटिक कन्स्ट्रक्टर - यदि आपको स्थैतिक वर्ग 'राज्य को प्रारंभ करने की आवश्यकता है। – zerkms

उत्तर

17

स्टेटिक कन्स्ट्रक्टर: स्थिर सदस्यों को प्रारंभ करने के लिए उपयोग किया जाता है।

निजी रचनाकार: जब आप केवल कक्षा को अपने कोड (आमतौर पर एक स्थिर विधि में) से तुरंत चालू करना चाहते हैं। उदाहरण के लिए:

public class Thing 
{ 
    static int Number; 

    static Thing() 
    { 
     Number = 42; // This will only be called once, no matter how many instances of the class are created 
    } 

    // This method is the only means for external code to get a new Thing 
    public static Thing GetNewThing() 
    { 
     return new Thing(); 
    } 

    // This constructor can only be called from within the class. 
    private Thing() 
    { 
    } 
} 
+4

आप फैक्ट्री पैटर्न को इस तरह कार्यान्वित कर सकते हैं - यानी यदि आपके पास व्यावसायिक वस्तुएं हैं जो एक निश्चित 'राज्य' में होने की आवश्यकता है, लेकिन आप तीसरे पक्ष/अन्य देवताओं को सार्वजनिक कन्स्ट्रक्टर का उपयोग करके प्रारंभ करने से रोकना चाहते हैं, तो आप कन्स्ट्रक्टर को निजी बना सकते हैं , और वस्तुओं को बनाने/प्राप्त करने के लिए कारखाने के तरीकों का एक सेट प्रदान करते हैं। इस तरह वे कन्स्ट्रक्टर द्वारा 'रिक्त' स्टेटलेस ऑब्जेक्ट नहीं प्राप्त कर सकते हैं (जब तक कि वे वास्तव में प्रतिबिंब नहीं करना चाहते हैं) – Charleh

+1

स्टेटिक कन्स्ट्रक्टर का उपयोग निजी कन्स्ट्रक्टर को आमंत्रित करने के लिए भी किया जा सकता है, जो बदले में क्लास प्रकार के निजी स्थिर सदस्य को तत्काल बना देता है। स्थैतिक कार्य/संपत्ति से सिर्फ इस सदस्य को वापस कर सकते हैं, इसलिए हमेशा एक वस्तु का एक उदाहरण होता है - एक सिंगलटन। – jwaliszko

3

स्टेटिक निर्माता वर्ग के स्थिर सदस्यों intialize करने के लिए प्रयोग किया जाता है और जब वर्ग का पहला उदाहरण बनाई गई है या एक स्थिर सदस्य पहली बार पहुंच जाता है कहा जाता है।

निजी निर्माता अगर आप निर्माता के भार के लिए है प्रयोग किया जाता है, और उनमें से कुछ ही अन्य निर्माताओं

8

द्वारा इस्तेमाल किया जाना चाहिए मेरी कक्षा में एक निजी निर्माता का उपयोग कब करना चाहिए?

जब आप एक निर्माता चाहते हैं, लेकिन इसे दुनिया में बेनकाब नहीं करना चाहते हैं। ऐसा इसलिए हो सकता है क्योंकि आपके पास एक फैक्ट्री विधि है जो कन्स्ट्रक्टर (सत्यापन के बाद) को कॉल करती है, या क्योंकि उस कन्स्ट्रक्टर को सीटीओआर-चेनिंग (यानी public Foo(string) : this() { ...}) कहा जाता है।

इसके अतिरिक्त, ध्यान दें कि प्रतिबिंब कोड अक्सर एक निजी कन्स्ट्रक्टर का उपयोग करने में सक्षम होता है - उदाहरण के लिए क्रमिकरण या ओआरएम पुस्तकालय।

इसके अलावा, शुरुआती सी # कंपाइलर्स में, जब आप लिख रहे हैं तो अब static कक्षा होगी - एक निजी कन्स्ट्रक्टर होने के कारण यह अविनाशी दिखाई देने का एकमात्र तरीका था।

मुझे अपनी कक्षा में एक स्थिर निर्माता का उपयोग कब करना चाहिए?

जब आपको उस स्थिति से पहले कुछ स्थैतिक अवस्था शुरू करने की आवश्यकता होती है तो उदाहरण या स्थैतिक तरीकों से इसका उपयोग किया जा रहा है।

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