क्या कन्स्ट्रक्टर कहने से पहले स्थैतिक क्षेत्र की शुरुआत पूरी होनी चाहिए?स्थिर क्षेत्र प्रारंभिकरण सी # में कैसे काम करता है?
निम्न प्रोग्राम आउटपुट प्रदान करता है जो मुझे गलत लगता है।
new A()
_A == null
static A()
new A()
_A == A
कोड:
public class A
{
public static string _A = (new A()).I();
public A()
{
Console.WriteLine("new A()");
if (_A == null)
Console.WriteLine("_A == null");
else
Console.WriteLine("_A == " + _A);
}
static A()
{
Console.WriteLine("static A()");
}
public string I()
{
return "A";
}
}
class Program
{
static void Main(string[] args)
{
var a = new A();
}
}
डैंग! मुझे इससे हराएं! –
सभी उचित सम्मान के साथ ... स्थिर कन्स्ट्रक्टर पहले नहीं चलता है। स्थिर क्षेत्र प्रारंभकर्ता पहले चलता है। – Prankster
ए_ए का निर्माण स्थैतिक कन्स्ट्रक्टर में होता है। यह सिर्फ इतना है कि संकलक सी # स्थिर कन्स्ट्रक्टर में घोषित कोड से पहले स्थिर कन्स्ट्रक्टर (.cctor) में सभी फ़ील्ड प्रारंभिकरणों को पूर्ववत करता है। –