Welche statische Klasse initialisiert zuerst, wenn wir in unserem Projekt noch eine statische Klasse haben?Welche statische Klasse initialisiert zuerst?
Zum Beispiel: Unter dem Code gibt Null Ausnahme.
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());
}
}
Wenn Sie darauf achten, werden Sie feststellen, dass, wenn First
Klasse selbst initialisieren wird so secondArray
Bereich der Second
null sein würde. Aber wenn Second
Klasse würde zuerst initialisiert werden, so Second
Klasse firstArray
wäre null. Ich versuche zu sagen, dass das, was initialisiert, zuerst andere Ergebnisse bringt.
Ich denke, dass es abstrakte Frage zu meinem Projekt ist. Ich stoße darauf und versuche zu verstehen, warum ich unerwartete Ergebnisse erhalte.
Ist die Standard-Garantie diese Bestellung? Meine Vermutung war, dass sich jede Klasse vor dem ersten Zugriff auf ein undefiniertes initialisiert, was dies in einen Abhängigkeitszyklus umwandelt, der zufällig aufgelöst wird. –
@Tim: Ich habe meine Antwort aktualisiert - ohne statische Konstruktoren ist die Reihenfolge in der Tat nicht definiert. –
Mit dem an VS2005 angehängten Debugger passiert eine schlechte Sache - 'Second.firstArray' wird auf' null' gesetzt – AakashM