Warum arbeitet der Initialisierer nicht mit Eigenschaften, die listt zurückgeben?

7

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!

    
tube-builder 17.06.2011, 12:36
quelle

6 Antworten

19

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:

%Vor%     
Jon Skeet 17.06.2011, 12:38
quelle
4

Dies liegt daran, dass die Eigenschaft children nicht initialisiert ist

%Vor%     
Atzoya 17.06.2011 12:38
quelle
2

Weil Sie eine Methode ausführen und keinen Wert zuweisen

    
John 17.06.2011 12:37
quelle
2

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:

%Vor%     
recursive 17.06.2011 12:37
quelle
2

Der folgende Wert legt keinen Wert im Initialisierer fest:

%Vor%

Es wird versucht, auf ein Mitglied eines Feldes zuzugreifen (ein noch nicht initialisiertes Feld).

    
Grant Thomas 17.06.2011 12:38
quelle
2

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.

    
Øyvind Bråthen 17.06.2011 12:38
quelle

Tags und Links