Schneller Weg, um eine Liste von Werten in C # zu erstellen?


105

Ich suche nach einer schnellen Möglichkeit, eine Liste von Werten in C # zu erstellen. In Java verwende ich häufig das folgende Snippet:

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

Gibt es ein Äquivalent in C # außer dem offensichtlichen unten?

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

Antworten:



19

Wenn Sie Unordnung reduzieren möchten, sollten Sie dies berücksichtigen

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

Dies verwendet zwei Funktionen von C # 3.0: Typinferenz (das varSchlüsselwort) und den Sammlungsinitialisierer für Listen.

Wenn Sie mit einem Array auskommen können, ist dies alternativ sogar noch kürzer (um einen kleinen Betrag):

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


1
@ Harrichael Richtig, und ich auch nicht. Aber wenn Sie keine Liste benötigen, gibt es keinen Grund, eine zu verwenden.
Konrad Rudolph

10

In C # 3 können Sie Folgendes tun:

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

Dies verwendet die neue Syntax für die Initialisierung von Sammlungen in C # 3.

In C # 2 würde ich nur Ihre zweite Option verwenden.


Nitpick: Sammlungsinitialisierer, kein Objektinitialisierer.
Timwi


5

Sie können das new string[]Teil fallen lassen:

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


3

Das kannst du machen mit

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

Hier sind einige andere häufige Instanziierungen anderer gängiger Datenstrukturen:

Wörterbuch

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

Anordnungsliste

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

Warteschlange

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

Stapel

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

Wie Sie in den meisten Fällen sehen können, werden lediglich die Werte in geschweiften Klammern hinzugefügt oder ein neues Array instanziiert, gefolgt von geschweiften Klammern und Werten.


1

Sie können eine generische statische Hilfsmethode zum Erstellen einer Liste erstellen:

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

Und dann ist die Nutzung sehr kompakt:

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

1

Wenn Sie eine typisierte Liste mit Werten erstellen möchten, finden Sie hier die Syntax.

Angenommen, eine Klasse von Studenten mag

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

Sie können eine Liste wie folgt erstellen:

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

Eine Liste von Werten schnell? Oder sogar eine Liste von Objekten!

Ich bin nur ein Anfänger in der C # -Sprache, aber ich benutze sie gerne

  • Hash-tabelle
  • Anordnungsliste
  • Datentabelle
  • Datensätze

etc.

Es gibt einfach zu viele Möglichkeiten, Gegenstände aufzubewahren

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.