Dieser Code hat das gut definiertes Verhalten in C# nicht arbeiten:Warum in C# bestellen Sie für die statische Initialisierung?
class Foo
{
static List<int> to = new List<int>(from); // from is still null
static IEnumerable<int> from = Something();
}
Hinweis: Ich frage nicht, wie dieser Code als I already known how to do that zu beheben
Was ist die Begründung dafür? C# führt bereits Zeitüberprüfungen durch, um den ersten Zugriff auf statische Member zu erkennen. Warum erweitern Sie das nicht auf ein Pro-Element-Objekt und lassen es bei Bedarf laufen, oder besser gesagt, der Compiler ermittelt den Auftrag zur Kompilierzeit?
BTW: Ich denke, die gleiche Frage (oder fast das gleiche) gilt auch für nicht statische Mitglieder.
Ich glaube, du antwortest dir selbst, indem du sagst, das sei "wohldefiniertes Verhalten". – mayu