Modo rapido per creare un elenco di valori in C #?


106

Sto cercando un modo rapido per creare un elenco di valori in C #. In Java utilizzo spesso lo snippet di seguito:

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

Esiste un equivalente in C # oltre a quello ovvio qui sotto?

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

Risposte:



19

Se stai cercando di ridurre il disordine, considera

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

Utilizza due funzionalità di C # 3.0: inferenza del tipo (la varparola chiave) e inizializzatore di raccolta per gli elenchi.

In alternativa, se puoi accontentarti di un array, questo è ancora più breve (di una piccola quantità):

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

2
In genere non sceglierei le mie strutture di dati in base a cui richiede meno caratteri per inizializzare ...
Harrichael,

1
@Harrichael Giusto, e nemmeno io. Ma a meno che tu non abbia bisogno di un elenco, non c'è motivo di usarne uno.
Konrad Rudolph

10

In C # 3 puoi fare:

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

Usa la nuova sintassi dell'inizializzatore di raccolta in C # 3.

In C # 2, userei solo la seconda opzione.


Nitpick: inizializzatore di raccolta, non inizializzatore di oggetti.
Timwi

8
IList<string> list = new List<string> {"test1", "test2", "test3"}

5

Puoi eliminare la new string[]parte:

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


3

Puoi farlo con

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

Ecco alcune altre istanze comuni di altre strutture dati comuni:

Dizionario

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

Lista di array

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

Coda

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

Pila

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

Come puoi vedere per la maggior parte dei casi, si tratta semplicemente di aggiungere i valori tra parentesi graffe o di creare un'istanza di un nuovo array seguito da parentesi graffe e valori.


1

È possibile creare un metodo statico e generico di supporto per creare l'elenco:

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

E poi l'utilizzo è molto compatto:

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

1

Se vuoi creare un elenco digitato con valori, ecco la sintassi.

Supponendo che una classe di studenti piaccia

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

Puoi creare un elenco come questo:

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

Un elenco di valori rapidamente? O anche un elenco di oggetti!

Sono solo un principiante nel linguaggio C # ma mi piace usare

  • tabella hash
  • Lista di array
  • Tabella dati
  • Dataset

eccetera.

Ci sono troppi modi per conservare gli oggetti

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.