2009-04-06 18 views
62

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

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

Gibt es irgendeine Entsprechung in C# abgesehen vom offensichtlichen unten?

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

Antwort

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

In C# 3 können Sie tun:

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

Dies nutzt die neue Auflistungsinitialisierer Syntax in C# 3.

In C# 2, würde ich nur Ihre zweite Möglichkeit.

+0

Nitpick: Auflistungsinitialisierer, nicht initializer Objekt. – Timwi

4

Sie können diese Codezeile in C# leicht vereinfachen, indem Sie eine collection initialiser verwenden.

var lst = new List<string> {"test1","test2","test3"}; 
5

Sie können die new string[] Teil fallen:

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

Wenn Sie Unordnung zu verringern suchen, betrachten

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

Diese verwendet zwei Funktionen von C# 3.0: Typinferenz (die var Schlüsselwort) und der Auflistungsinitialisierer für Listen.

Alternativ, wenn Sie mit einem Array tun machen, das ist sogar noch kürzer (um einen kleinen Betrag):

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

Normalerweise würde ich meine Datenstrukturen nicht auswählen, auf denen man weniger Zeichen zum Initialisieren braucht ... – Harrichael

+0

@Harrichael Richtig, und ich auch nicht. Aber wenn Sie keine Liste brauchen, gibt es keinen Grund, eine zu verwenden. –

-5

Eine Liste der Werte schnell? Oder sogar eine Liste von Objekten!

Ich bin nur ein Anfänger in der Sprache C#, aber ich mag mit

  • Hashtable
  • Arraylist
  • Datentabelle
  • Datensätze

usw.

Es gerade ist zu viele Möglichkeiten zum Speichern von Elementen

1

Sie können Helfer generic, statische Methode erstellen, um die Liste zu erstellen:

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

Und dann Benutzung ist sehr kompakt:

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