निम्नलिखित कोड:स्थैतिक क्षेत्र प्रारंभिक स्थिरता से पहले क्यों होता है?
static void Main(string[] args)
{
Console.WriteLine("0");
string h = Foo.X;
Console.WriteLine("2");
}
public static class Foo
{
public static string X = ((Func<string, string>)delegate(string g)
{
Console.WriteLine(g);
return (g);
})("_aaa");
static Foo()
{
Console.WriteLine("ctor");
}
}
प्रिंट होगा:
0
_aaa
ctor
2
मैं beforefieldinit
व्यवहार (साथ/स्थिर निर्माता आदि के बिना) के बारे में पता है।
बात जो मैं समझ में नहीं कर क्यों ctor
(उत्पादन में) _aaa
के बाद क्या है?
यह कोई समझ नहीं आता है, अगर मैं निर्माता में चर शुरू करना चाहता हूं तो क्या होगा?
प्रश्न
क्यों X
का आरंभीकरण ctor
से पहले है करता है?
यह गैर स्थैतिक क्षेत्रों और गैर स्थैतिक रचनाकारों के लिए समान है, निश्चित रूप से: 'कक्षा फू {सार्वजनिक स्ट्रिंग एक्स = "ए"; सार्वजनिक फू() {एक्स = "बी"; }} 'इसके साथ, यदि आप '(नया फू()) करते हैं। एक्स', आपको' बी "', "नहीं" 'मिलता है, क्योंकि' बी "का असाइनमेंट अंतिम होता है (पहले ओवरराइट करें मूल्य)। –
@JeppeStigNielsen स्पष्टीकरण के लिए धन्यवाद –