Comment initialiser une liste avec le constructeur?
J'ai un type:
public class Human
{
public int Id { get; set; }
public string Address { get; set; }
public string Name { get; set; }
public List<ContactNumber> ContactNumbers { get; set; }
public Human(int id)
{
Id = id;
}
public Human(int id, string address, string name,
List<ContactNumber> contactNumbers) :
this(id)
{
Address = address;
Name = name;
ContactNumbers = contactNumbers;
}
}
Merci de me guider parmi les bonnes pratiques à utiliser constructeur avec initialisation de la liste?
Comment initialiser une liste à l'aide du constructeur?
Edit:
Merci de me guider parmi les bonnes pratiques à utiliser constructeur avec initialisation de la liste?
Comment affecter des valeurs à la liste à l'aide d'un constructeur, donc si pas de valeur transmise par défaut sera utilisé?
Grâce
Vous devez vous connecter pour publier un commentaire.
À l'aide d'un initialiseur de collection
À partir de C# 3, vous pouvez utiliser des initialiseurs de la collection pour créer une Liste et de le remplir à l'aide d'une seule expression. L'exemple suivant construit un Homme et ses ContactNumbers:
Spécialisée la
Human
constructeurVous pouvez modifier le constructeur de la
Human
classe afin de fournir un moyen de remplir laContactNumbers
propriété:Ligne de fond
L'alternative est une bonne pratique? Ou au moins une bonne pratique? Vous juger! OMI, la meilleure pratique consiste à écrire le programme aussi clairement que possible à n'importe qui qui a le lire. À l'aide de l'initialiseur de collection est un gagnant pour moi, dans ce cas. Avec beaucoup moins de code, il peut faire presque la même chose que les solutions de rechange -- au moins, les solutions de rechange que j'ai donné...
Vous êtes à la recherche pour cela?
Si vous voulez qu'il soit transmis, il suffit de prendre
Vous pouvez l'initialiser comme toute liste:
Cependant, j'irais même plus loin et de faire de l'incubateur privé puisque souvent, vous n'avez pas besoin de définir la liste, mais juste d'accès/modifier son contenu:
En général de ne pas exposer
List<T>
publiquement, et de ne pas fournir des setters pour les propriétés de collection. Aussi, vous pouvez copier les éléments de la liste (voir ci-dessous). Sinon, les modifications à la liste d'origine seront affecter l'Homme de l'instance.Une autre option est d'utiliser la liste de constructeur qui prend une collection et retirez le domaine de l'initialiseur.