2017-04-24 1 views
0

J'ai un doute conceptuel fondamental et je cherche une réponse depuis un certain temps maintenant. J'ai initialisé une liste de la manière suivante:Initialisation d'objet de liste

List<string> list = new List<string>() { "a", "b", "c" }; 

Juste pour cette fois j'ai raté le() et initialisés de la manière suivante à la place:

List<string> list = new List<string> { "a", "b", "c" }; 

Pas le temps de compilation ou d'une erreur temps d'exécution était jeté. donc je veux savoir si la seconde méthode est bonne? Et quelle est la différence entre les deux?

+1

Le '()' est optionnel, il n'y a pas de différence. Si vous regardez le IL, il devrait être le même. –

+0

Vous devez utiliser '()' lorsque vous fournissez des arguments au constructeur, sinon vous pouvez les omettre lors de l'utilisation de l'initialiseur d'objet. – dcg

+0

Je l'ai maintenant, merci :) –

Répondre

1

deux fait le même travail, où () est facultative

Dans votre premier exemple, le compilateur sait que vous appelez le constructeur par défaut

List<string> list = new List<string> { "a", "b", "c" }; 

Dans le second, vous explicitement appeler le constructeur par défaut

List<string> list = new List<string>() { "a", "b", "c" };