web-dev-qa-db-fra.com

Un moyen plus simple de remplir une liste avec des entiers dans .NET

Duplicate possible:
Remplir une liste d'entiers dans .NET

Existe-t-il un moyen plus simple ou plus élégant d’initialiser une liste d’entiers en C # autre que celui-ci?

List<int> numberList = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

ou

for(int i = 1; i <= 10; i++)
{
    numberList.Add(i);
}

Cela ne semble tout simplement pas très pratique - surtout si la liste devait contenir un grand nombre de valeurs. Une boucle serait-elle une solution plus pratique?

Merci,

CC

88
The Coding Cowboy

Vous pouvez tirer parti de la méthode Enumerable.Range() :

var numberList = Enumerable.Range(1, 10).ToList();

Le premier paramètre est le nombre entier à partir duquel commencer et le deuxième paramètre est le nombre d'entiers séquentiels à inclure.

181
Rion Williams

Si votre liste d'initialisation est aussi simple qu'une séquence consécutive de valeurs de from à end, vous pouvez simplement dire

var numbers = Enumerable.Range(from, end - from + 1)
                        .ToList();

Si votre liste d'initialisation est quelque chose d'un peu plus complexe qui peut être définie par un mappage f de int à int, vous pouvez dire

var numbers = Enumerable.Range(from, end - from + 1)
                        .Select(n => f(n))
                        .ToList();

Par exemple:

var primes = Enumerable.Range(1, 10)
                       .Select(n => Prime(n))
                       .ToList();

générerait les dix premiers nombres premiers en supposant que Prime est un Func<int, int> qui prend un int n et retourne le nth prime.

41
jason