Impossible de trouver une réponse à cette question. Il doit être évident, mais toujours.
J'essaie d'utiliser Initializer dans cet exemple simplifié: p> où les enfants sont une propriété pour cette classe, qui renvoie une liste. Et ici, je rencontre une erreur, ce qui va comme «déclarateur membre d'initialisateur non valide». P> Qu'est-ce qui ne va pas ici et comment initiez-vous de telles propriétés? Merci beaucoup à l'avance! P> p>
6 Réponses :
Parce que vous exécutez une méthode, ne pas attribuer une valeur p>
La syntaxe d'initialisateur de champ ne peut être utilisée que pour régler les champs et les propriétés, pas pour les méthodes d'appel. Si enfants code> est
list
T myT = /* smth */
MyNode newNode = new MyNode
{
NodeName = "newNode",
Children = new List<T> { myT }
};
Les éléments suivants ne définissent pas une valeur dans l'initialiseur:
Children.Add(/*smth*/) // mistake is here
C'est parce que la propriété des enfants n'est pas initialisée
Vous ne pouvez pas appeler des méthodes comme celle des initialisateurs d'objets - vous ne pouvez définir que des propriétés ou des champs plutôt que des méthodes d'appel. Cependant, dans ce cas, vous avez probablement peut em> utiliser la syntaxe d'initialisateur d'objet et de collecte: Notez que cela n'essaiera pas d'attribuer une nouvelle valeur à Enfants code>, il appellera
enfants.add (...) code>, comme celui-ci: p>
initialiseurs est juste d'initialiser les propriétés, pas d'autres actions. P>
Vous n'essayez pas d'initialiser la liste des enfants, vous essayez d'ajouter quelque chose. p>
enfants = nouvelle liste
Cela n'initialise pas une propriété. Vous appelez une méthode.