134 votes

Comment initialiser une liste C# dans la même ligne que je la déclare. (Exemple de collection de chaînes IEnumerable)

J'écris mon code de test et je ne veux pas écrire :

List<string> nameslist = new List<string>();
nameslist.Add("one");
nameslist.Add("two");
nameslist.Add("three");

J'adorerais écrire

List<string> nameslist = new List<string>({"one", "two", "three"});

Cependant, {"one", "two", "three"} n'est pas une "Collection de chaînes IEnumerable". Comment initialiser cela en une seule ligne à l'aide de la collection de chaînes IEnumerable "?

203voto

Matthew Abbott Points 32861
var list = new List<string> { "One", "Two", "Three" };

Essentiellement, la syntaxe est :

new List<Type> { Instance1, Instance2, Instance3 };

Ce qui est traduit par le compilateur comme

List<string> list = new List<string>();
list.Add("One");
list.Add("Two");
list.Add("Three");

20voto

astander Points 83138

Changez le code en

List<string> nameslist = new List<string> {"one", "two", "three"};

ou

List<string> nameslist = new List<string>(new[] {"one", "two", "three"});

7voto

Manti_Core Points 109

Poster cette réponse pour les gens qui veulent initialiser la liste avec POCOs et aussi coz c'est la première chose qui apparaît dans la recherche, mais toutes les réponses seulement pour la liste de type string.

Vous pouvez le faire de deux façons : en définissant directement la propriété par assignation de setter ou en créant un constructeur qui prend en charge les paramètres et définit les propriétés.

class MObject {        
        public int Code { get; set; }
        public string Org { get; set; }
    }

List<MObject> theList = new List<MObject> { new MObject{ PASCode = 111, Org="Oracle" }, new MObject{ PASCode = 444, Org="MS"} };

OU par constructeur paramétré

class MObject {
        public MObject(int code, string org)
        {
            Code = code;
            Org = org;
        }

        public int Code { get; set; }
        public string Org { get; set; }
    }

List<MObject> theList = new List<MObject> {new MObject( 111, "Oracle" ), new MObject(222,"SAP")};


        

7voto

Richard Fawcett Points 1823

Il suffit de perdre la parenthèse :

var nameslist = new List<string> { "one", "two", "three" };

3voto

Romain Meresse Points 1878
List<string> nameslist = new List<string> {"one", "two", "three"} ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X