Question

J'ai besoin d'une liste d'entiers de 1 à x où x est défini par l'utilisateur.Je pourrais le construire avec une boucle for, par exemple en supposant que x est un ensemble entier précédemment :

List<int> iList = new List<int>();
for (int i = 1; i <= x; i++)
{
    iList.Add(i);
}

Cela semble stupide, il existe sûrement une manière plus élégante de procéder, quelque chose comme Méthode de plage PHP

Était-ce utile?

La solution

Si vous utilisez .Net 3.5, Énumérable.Range c'est ce dont vous avez besoin.

Génère une séquence de nombres intégraux dans une plage spécifiée.

Autres conseils

LINQ à la rescousse :

// Adding value to existing list
var list = new List<int>();
list.AddRange(Enumerable.Range(1, x));

// Creating new list
var list = Enumerable.Range(1, x).ToList();

Voir Opérateurs de Production sur LINQ101

Je suis l'un des nombreux qui ont blogué à propos d'un rubis À méthode d'extension que vous pouvez écrire si vous utilisez C#3.0 :


public static class IntegerExtensions
{
    public static IEnumerable<int> To(this int first, int last)
    {
        for (int i = first; i <= last; i++)
{ yield return i; } } }

Ensuite, vous pouvez créer votre liste d'entiers comme celle-ci

List<int> = first.To(last).ToList();

ou

List<int> = 1.To(x).ToList();

Voici une courte méthode qui renvoie une liste d'entiers.

    public static List<int> MakeSequence(int startingValue, int sequenceLength)
    {
        return Enumerable.Range(startingValue, sequenceLength).ToList<int>();
    }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top