Konnte keine Antwort auf diese Frage finden. Es muss offensichtlich sein, aber immer noch.
Ich versuche in diesem vereinfachten Beispiel Initialisierer zu verwenden:
%Vor%wobei Children eine Eigenschaft für diese Klasse ist, die eine Liste zurückgibt. Und hier stoße ich auf einen Fehler, der wie 'Invalid initializer member declarator' lautet.
Was ist hier falsch, und wie initialisieren Sie solche Eigenschaften? Vielen Dank im Voraus!
Sie können Methoden wie diese nicht in Objektinitialisierern aufrufen - Sie können nur Eigenschaften oder Felder setzen, anstatt Methoden aufzurufen. In diesem Fall können Sie jedoch wahrscheinlich noch die Syntax für die Initialisierung von Objekten und Sammlungen verwenden:
%Vor% Beachten Sie, dass dies nicht versucht, Children
einen neuen Wert zuzuweisen, sondern Children.Add(...)
, wie folgt:
Die Feldinitialisierungssyntax kann nur zum Festlegen von Feldern und Eigenschaften verwendet werden, nicht zum Aufrufen von Methoden. Wenn Children
ist List<T>
, können Sie es möglicherweise auf diese Weise erreichen, indem Sie auch die Listeninitialisierersyntax einschließen:
Der folgende Wert legt keinen Wert im Initialisierer fest:
%Vor%Es wird versucht, auf ein Mitglied eines Feldes zuzugreifen (ein noch nicht initialisiertes Feld).
Initialisierer dient nur dazu, die Eigenschaften zu initialisieren, nicht andere Aktionen.
Sie versuchen nicht, die Children-Liste zu initialisieren, Sie versuchen, etwas hinzuzufügen.
Children = new List<smth>()
initialisiert es.
Tags und Links .net c# initializer