Szybki sposób tworzenia listy wartości w C #?

107

Szukam szybkiego sposobu tworzenia listy wartości w języku C #. W Javie często używam poniższego fragmentu:

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

Czy jest jakiś odpowiednik w C # oprócz tego oczywistego poniżej?

IList<string> l = new List<string>(new string[] {"test1","test2","test3"});
Piotr Czapla
źródło

Odpowiedzi:

19

Jeśli chcesz zmniejszyć bałagan, rozważ

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

Wykorzystuje dwie funkcje języka C # 3.0: wnioskowanie o typie ( varsłowo kluczowe) i inicjator kolekcji dla list.

Alternatywnie, jeśli możesz sobie poradzić z tablicą, jest to jeszcze krótsze (o niewielką kwotę):

var arr = new [] { "foo", "bar" };
Konrad Rudolph
źródło
2
Zwykle nie wybierałbym struktur danych w oparciu o to, w których inicjalizacja wymaga mniej znaków ...
Harrichael
1
@Harrichael Racja, ja też nie. Ale jeśli nie potrzebujesz listy, nie ma powodu, by jej używać.
Konrad Rudolph
10

W C # 3 możesz:

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

Używa nowej składni inicjatora kolekcji w C # 3.

W C # 2 użyłbym tylko twojej drugiej opcji.

Reed Copsey
źródło
Nitpick: inicjator kolekcji, a nie inicjator obiektu.
Timwi
8
IList<string> list = new List<string> {"test1", "test2", "test3"}
Matt Grande
źródło
5

Możesz upuścić new string[]część:

List<string> values = new List<string> { "one", "two", "three" };
John Rasch
źródło
4

Możesz nieco uprościć ten wiersz kodu w C # przy użyciu inicjatora kolekcji .

var lst = new List<string> {"test1","test2","test3"};
Noldorin
źródło
3

Możesz to zrobić za pomocą

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

Oto kilka innych typowych wystąpień innych typowych struktur danych:

Słownik

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

Lista tablic

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

Kolejka

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

Stos

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

Jak widać w większości przypadków jest to po prostu dodanie wartości w nawiasach klamrowych lub utworzenie wystąpienia nowej tablicy, po której następują nawiasy klamrowe i wartości.

Braden Brown
źródło
1

Możesz stworzyć pomocniczą ogólną, statyczną metodę tworzenia listy:

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

A potem użycie jest bardzo kompaktowe:

List.Of("test1", "test2", "test3")
Konrad Kokosa
źródło
1

Jeśli chcesz utworzyć listę wpisaną z wartościami, oto składnia.

Zakładając klasę ucznia podobną

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

Możesz utworzyć taką listę:

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
źródło
-5

Lista wartości szybko? Albo nawet listę obiektów!

Jestem tylko początkującym w języku C #, ale lubię używać

  • Hashtable
  • Arraylist
  • Tabela danych
  • Zestawy danych

itp.

Jest zbyt wiele sposobów przechowywania przedmiotów

Ćwiek
źródło