Warum nicht Initialisierer Arbeit mit Eigenschaften, die Rückkehr list<t>?
Konnte nicht finden, eine Antwort auf diese Frage. Es muss offensichtlich sein, aber trotzdem.
Ich versuche es mal mit Initialisierung in diesem vereinfachten Beispiel:
MyNode newNode = new MyNode
{
NodeName = "newNode",
Children.Add(/*smth*/) //mistake is here
};
wo die Kinder ist eine Eigenschaft, die für diese Klasse, die eine Liste zurückgibt. Und hier stoße ich auf einen Fehler, das geht wie 'Ungültige Initialisierung Mitglied gegen die Feststellung'.
Was ist hier falsch, und wie Sie initialisiert werden solche Eigenschaften? Vielen Dank im Voraus!
- Ist das nicht die Initialisierung einer Eigenschaft. Sie sind eine Methode aufrufen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie keine Methoden aufrufen, wie im Objekt-Initialisierungen - Sie können nur Eigenschaften oder Felder, sondern als Methoden aufrufen. Aber in diesem Fall haben Sie wahrscheinlich kann noch verwenden Objekt-und collection-Initialisierer-syntax:
Beachten Sie, dass diese nicht versuchen werden, einen neuen Wert zuweisen, um
Children
es rufenChildren.Add(...)
wie diese:Es ist, weil die children-Eigenschaft ist nicht initialisiert
Weil Sie eine Methode ausführt, nicht der Zuweisung eines Wertes
Feld-Initialisierer-syntax kann nur verwendet werden für die Einstellung der Felder und Eigenschaften, nicht für den Aufruf von Methoden. Wenn
Children
istList<T>
werden, können Sie möglicherweise, um es zu erreichen diese Art, von der auch die Liste Initialisierer-syntax:Der folgenden ist nicht ein Wert in der initialiser:
Er versucht Zugriff auf ein Mitglied ein Feld (ein " noch-nicht-initialisiert ein, auch.)
Initialisierungen ist nur zum initialisieren der Eigenschaften, nicht anderen Aktionen.
Sind Sie nicht versucht, zu initialisieren, die Kinder-Liste, das Sie hinzufügen möchten, etwas, um es.
Children = new List<smth>()
initialisiert es.