Pergunta

Como faço para converter um HashSet para uma matriz em .NET?

Foi útil?

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)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top