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"});
Piotr Czapla
la source

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" };
Konrad Rudolph
la source
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.

Reed Copsey
la source
Nitpick: initialiseur de collection, pas d'initialisation d'objet.
Timwi
8
IList<string> list = new List<string> {"test1", "test2", "test3"}
Matt Grande
la source
5

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

List<string> values = new List<string> { "one", "two", "three" };
John Rasch
la source
4

Vous pouvez simplifier légèrement cette ligne de code en C # en utilisant un initialiseur de collection .

var lst = new List<string> {"test1","test2","test3"};
Noldorin
la source
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.

Braden Brown
la source
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")
Konrad Kokosa
la source
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"}
            };
FoxDeploy
la source
-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

Brad
la source