यदि हमारे पास हमारे प्रोजेक्ट में एक और स्थिर वर्ग हैं तो कौन सा स्थैतिक वर्ग पहले शुरू होता है?कौन सा स्थैतिक वर्ग पहले शुरू करता है?
उदाहरण के लिए: कोड के नीचे शून्य अपवाद देता है।
class Program
{
static void Main(string[] args)
{
First.Write();
Second.Write();
}
}
static class First
{
public static int[] firstArray = new int[20];
public static int[] secondArray = Second.secondArray;
public static void Write()
{
Console.WriteLine(firstArray.ToString());
Console.WriteLine(secondArray.ToString());
}
}
static class Second
{
public static int[] firstArray = First.firstArray;
public static int[] secondArray = new int[30];
public static void Write()
{
Console.WriteLine(firstArray.ToString());
Console.WriteLine(secondArray.ToString());
}
}
आप ध्यान देना है, तो आप यह है कि अगर First
वर्ग में ही प्रारंभ हो जाएगा तो Second
की secondArray
फ़ील्ड रिक्त हो जाएगा देखेंगे। लेकिन अगर Second
कक्षा पहले शुरू होगी तो Second
कक्षा firstArray
शून्य होगी। मैं यह बताने की कोशिश कर रहा हूं कि पहले शुरूआत करने से अलग-अलग परिणाम मिलते हैं।
मुझे लगता है कि यह मेरे प्रोजेक्ट के बारे में अमूर्त प्रश्न है। मुझे यह समझने की कोशिश करते हुए इसका सामना करना पड़ रहा है कि मुझे अप्रत्याशित परिणाम क्यों मिल रहे हैं।
मानक गारंटी करता है यह आदेश? मेरा अनुमान था कि प्रत्येक वर्ग पहली पहुंच से पहले कुछ अपरिभाषित पर शुरू होता है, जो इसे एक निर्भरता चक्र में बदल देता है जो यादृच्छिक रूप से हल हो जाता है। –
@ टिम: मैंने अपना जवाब अपडेट कर लिया है - बिना स्थिर रचनाकारों के, आदेश वास्तव में अपरिभाषित है। –
वीएस2005 से जुड़ा डीबगर के साथ, एक बुरी चीज होती है - 'दूसरा। फर्स्टअरे' को 'शून्य' – AakashM