Frage

Wie konvertiere ich ein HashSet auf ein Array in .NET?

War es hilfreich?

Lösung

Mit der HashSet<T>.CopyTo Methode. Diese Methode kopiert die Elemente aus der HashSet<T> zu einem Array.

So ein HashSet<String> genannt stringSet gegeben du so etwas tun würde:

String[] stringArray = new String[stringSet.Count];
stringSet.CopyTo(stringArray);

Andere Tipps

Wenn Sie System.Collections.Generic.HashSet meinen, es ist ziemlich schwer, da diese Klasse nicht vor existiert bis framework 3.5.

Wenn Sie Sie meinen sind auf 3.5, nur ToArray verwenden, da HashSet IEnumerable implementiert, z.

using System.Linq;
...
HashSet<int> hs = ...
int[] entries = hs.ToArray();

Wenn Sie eine eigene HashSet Klasse haben, ist es schwer zu sagen.

Ich denke

function T[] ToArray<T>(ICollection<T> collection)
{
    T[] result = new T[collection.Count];
    int i = 0;
    foreach(T val in collection)
    {
        result[i++] = val;
    }
}

wie für jede ICollection<T> Umsetzung.

Eigentlich in der Tat, wie Sie System.Core verweisen muss die HashSet<T> Klasse verwenden, dann kann man auch verwenden es:

T[] myArray = System.Linq.Enumerable.ToArray(hashSet);

Jetzt können Sie tun es noch einfacher, mit List<T> Konstruktor (Listen sind modern Arrays :). E. g, in Powershell:.

$MyNewArray = [System.Collections.Generic.List[string]]::new($MySet)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top