Un moyen rapide de créer une liste de valeurs en C #?


107

Je recherche un moyen rapide de créer une liste de valeurs en C #. En Java, j'utilise fréquemment l'extrait ci-dessous:

List<String> l = Arrays.asList("test1","test2","test3");

Existe-t-il un équivalent en C # en dehors de l'évident ci-dessous?

IList<string> l = new List<string>(new string[] {"test1","test2","test3"});

Réponses:



19

Si vous cherchez à réduire l'encombrement, envisagez

var lst = new List<string> { "foo", "bar" };

Cela utilise deux fonctionnalités de C # 3.0: l'inférence de type (le varmot clé) et l'initialiseur de collection pour les listes.

Alternativement, si vous pouvez vous contenter d'un tableau, c'est encore plus court (par une petite quantité):

var arr = new [] { "foo", "bar" };

2
Je ne choisirais généralement pas mes structures de données en fonction desquelles il faut moins de caractères pour s'initialiser ...
Harrichael

1
@Harrichael Oui, et moi non plus. Mais à moins d'avoir besoin d'une liste, il n'y a aucune raison d'en utiliser une.
Konrad Rudolph

10

En C # 3, vous pouvez faire:

IList<string> l = new List<string> { "test1", "test2", "test3" };

Cela utilise la nouvelle syntaxe d'initialisation de collection en C # 3.

En C # 2, j'utiliserais simplement votre deuxième option.


Nitpick: initialiseur de collection, pas d'initialisation d'objet.
Timwi


5

Vous pouvez déposer la new string[]pièce:

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


3

Vous pouvez le faire avec

var list = new List<string>{ "foo", "bar" };

Voici quelques autres instanciations courantes d'autres structures de données courantes:

dictionnaire

var dictionary = new Dictionary<string, string> 
{
    { "texas",   "TX" },
    { "utah",    "UT" },
    { "florida", "FL" }
};

Liste des tableaux

var array = new string[] { "foo", "bar" };

Queue

var queque = new Queue<int>(new[] { 1, 2, 3 });

Empiler

var queque = new Stack<int>(new[] { 1, 2, 3 });

Comme vous pouvez le voir dans la majorité des cas, il s'agit simplement d'ajouter les valeurs entre accolades ou d'instancier un nouveau tableau suivi d'accolades et de valeurs.


1

Vous pouvez créer une méthode auxiliaire générique et statique pour créer une liste:

internal static class List
{
    public static List<T> Of<T>(params T[] args)
    {
        return new List<T>(args);
    }
}

Et puis l'utilisation est très compacte:

List.Of("test1", "test2", "test3")

1

Si vous souhaitez créer une liste typée avec des valeurs, voici la syntaxe.

En supposant une classe d'étudiants comme

public class Student {
   public int StudentID { get; set; }
   public string StudentName { get; set; }
 }   

Vous pouvez faire une liste comme celle-ci:

IList<Student> studentList = new List<Student>() { 
                new Student(){ StudentID=1, StudentName="Bill"},
                new Student(){ StudentID=2, StudentName="Steve"},
                new Student(){ StudentID=3, StudentName="Ram"},
                new Student(){ StudentID=1, StudentName="Moin"}
            };

-5

Une liste de valeurs rapidement? Ou même une liste d'objets!

Je ne suis qu'un débutant en langage C # mais j'aime utiliser

  • Hashtable
  • Liste des tableaux
  • Datatable
  • Ensembles de données

etc.

Il y a trop de façons de stocker des articles

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.