Konvertieren Sie ein Array von Zeichenfolgen in List <string>

162

Ich habe Beispiele dafür gesehen, die mit .ToList()Array-Typen durchgeführt wurden. Dies scheint nur in .Net 3.5+ verfügbar zu sein . Ich arbeite mit .NET Framework 2.0 an einem ASP.NET-Projekt, das derzeit nicht aktualisiert werden kann. Daher habe ich mich gefragt: Gibt es eine andere Lösung? Eine, die eleganter ist, als das Array zu durchlaufen und jedes Element zu dieser Liste hinzuzufügen (was kein Problem ist; ich frage mich nur, ob es eine bessere Lösung für Lernzwecke gibt)?

string[] arr = { "Alpha", "Beta", "Gamma" };

List<string> openItems = new List<string>();

foreach (string arrItem in arr)
{
    openItems.Add(arrItem);
}

Wenn ich es auf diese Weise tun muss, gibt es eine Möglichkeit, die Zuordnung des verbleibenden Arrays aus dem Speicher aufzuheben, nachdem ich es in meine Liste kopiert habe?

Nick Rolando
quelle
1
Mach dir keine Sorgen um das Aufräumen arr, der Müllsammler wird das viel besser machen als du.
Mike Christensen
37
Sie speziell. Und ich. Tatsächlich denke ich, dass nur Jon Skeet seine eigene Müllabfuhr machen darf.
Mike Christensen
@ MikeChristensen Konnte nicht widerstehen, das für den Jon Skeet-Kommentar zu stimmen. lol
Ctrl S

Antworten:

412

Verwenden Sie einfach diesen Konstruktor von List<T>. Es akzeptiert jedes IEnumerable<T>als Argument.

string[] arr = ...
List<string> list = new List<string>(arr);
Dmytro Shevchenko
quelle
26

Ab .Net 3.5 können Sie die LINQ-Erweiterungsmethode verwenden, die (manchmal) den Codefluss etwas verbessert.

Die Verwendung sieht folgendermaßen aus:

using System.Linq; 

// ...

public void My()
{
    var myArray = new[] { "abc", "123", "zyx" };
    List<string> myList = myArray.ToList();
}

PS. Es gibt auch eine ToArray()Methode, die auf andere Weise funktioniert.

andrew.fox
quelle