Converter um HashSet para uma matriz em .NET
Pergunta
Como faço para converter um HashSet
Solução
Use a HashSet<T>.CopyTo
método. Este método copia os itens do HashSet<T>
a uma matriz.
Assim, dado um HashSet<String>
chamado stringSet
você faria algo assim:
String[] stringArray = new String[stringSet.Count];
stringSet.CopyTo(stringArray);
Outras dicas
Se você quer dizer System.Collections.Generic.HashSet, é meio difícil, uma vez que a classe não existe antes do quadro 3.5.
Se você quer dizer que você está em 3,5, é só usar ToArray desde implementos HashSet IEnumerable, por exemplo.
using System.Linq;
...
HashSet<int> hs = ...
int[] entries = hs.ToArray();
Se você tem sua própria classe HashSet, é difícil dizer.
Eu acho
function T[] ToArray<T>(ICollection<T> collection)
{
T[] result = new T[collection.Count];
int i = 0;
foreach(T val in collection)
{
result[i++] = val;
}
}
como para qualquer implementação ICollection<T>
.
Na verdade, na verdade, como você deve fazer referência System.Core
usar a classe HashSet<T>
assim como você pode usá-lo:
T[] myArray = System.Linq.Enumerable.ToArray(hashSet);
Agora você pode fazê-lo ainda mais simples, com construtor List<T>
(As listas são matrizes modernas :).
E. g, em PowerShell:.
$MyNewArray = [System.Collections.Generic.List[string]]::new($MySet)