एक और सवाल पर एसओ सी # में इस कोड की कोशिश करने के लिए मुझे प्रेरित किया:अपने स्थिर कन्स्ट्रक्टर में एक वर्ग का उदाहरण बनाना - इसकी अनुमति क्यों है?
class Program
{
static Program()
{
new Program().Run();
}
static void Main(string[] args) { }
void Run()
{
System.Console.WriteLine("Running");
}
}
यह प्रिंट "चल रहा" जब रन।
मुझे वास्तव में संकलक इस बारे में शिकायत करने की उम्मीद करता था। आखिरकार, यदि कक्षा अभी तक स्थिर निर्माता द्वारा शुरू नहीं की गई है; हम कैसे सुनिश्चित कर सकते हैं कि यह कॉल विधियों के लिए मान्य है?
तो संकलक हमें ऐसा करने से क्यों प्रतिबंधित नहीं करता है? क्या इसके लिए कोई महत्वपूर्ण उपयोग परिदृश्य है?
संपादित
मैं सिंगलटन पैटर्न के बारे में पता कर रहा हूँ; सवाल यह है कि मैं अपने स्थिर कन्स्ट्रक्टर खत्म होने से पहले उदाहरण पर एक विधि क्यों कह सकता हूं। अभी तक जेरेडपार के जवाब के बारे में कुछ अच्छा तर्क है।
एक सिंगलटन पैटर्न के साथ, यह वास्तव में * सर्वोत्तम अभ्यास * स्थिर रचनाकार (या स्थिर क्षेत्र प्रारंभकर्ता में, जो एक ही चीज़ के बराबर है) में संलग्न कक्षा को तुरंत चालू करने के लिए है। –