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

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" };
Konrad Rudolph
quelle
2
Normalerweise
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.

Reed Copsey
quelle
Nitpick: Sammlungsinitialisierer, kein Objektinitialisierer.
Timwi
8
IList<string> list = new List<string> {"test1", "test2", "test3"}
Matt Grande
quelle
5

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

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

Sie können diese Codezeile in C # mithilfe eines Auflistungsinitialisierers geringfügig vereinfachen .

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

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

Brad
quelle