Konvertieren eines HashSet auf ein Array in .NET
Frage
Wie konvertiere ich ein HashSet
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)