deklariert ich bin in der Lage erfolgreich das folgende Programm kompilieren und ausführen:Wie kommen statische Variable verwendbar selbst ist, bevor es in C#
class MyClass1
{
public static int x = y;
public static int y = 10;
}
static void Main(string[] args)
{
Console.WriteLine(MyClass1.x); //prints 0
Console.WriteLine(MyClass1.y); //prints 10
}
Warum erfolgreich kompiliert wird? Wie erhält x
den Wert y
, noch bevor es deklariert und initialisiert wird? Derselbe Fehler bei der Kompilierung, wie es bei Instanzfeldern der Fall war.
definieren „vor“. Da sie statisch sind, muss MyClass1 nicht instanziiert werden, um x und y zu verwenden. In diesem Fall wäre also "vorher" nur vorhanden, bevor Sie sie zur Klasse hinzugefügt haben. – TigOldBitties
Konnte dir nicht ganz folgen. Ich weiß, dass sowohl x als auch y statische Felder sind. Die Initialisierung erfolgt für statische Felder durch statischen Konstruktor, wenn wir versuchen, zum ersten Mal (in diesem Fall) auf ein statisches Feld oder eine statische Methode für einen Typ zuzugreifen. Wenn es passiert, glaube ich, dass y verfügbar sein sollte, wenn x initialisiert wird, aber y in der nächsten Zeile gefunden wird, was problematisch ist. – RBT