Convertir un hachage < T > à un tableau dans .NET
Question
Comment convertir un hachage < T > à un tableau dans .NET?
La solution
Utilisez le HashSet < T > .CopyTo
méthode. Cette méthode copie les éléments du HashSet < T >
dans un tableau.
Donc, avec un HashSet < Chaîne >
appelé stringSet
, vous feriez quelque chose comme ceci:
String[] stringArray = new String[stringSet.Count];
stringSet.CopyTo(stringArray);
Autres conseils
Si vous voulez dire System.Collections.Generic.HashSet, c'est un peu difficile car cette classe n'existait pas avant le framework 3.5.
Si vous voulez dire que vous êtes sur la version 3.5, utilisez simplement ToArray puisque HashSet implémente IEnumerable, par exemple.
using System.Linq;
...
HashSet<int> hs = ...
int[] entries = hs.ToArray();
Si vous avez votre propre classe HashSet, il est difficile de le dire.
Je suppose
function T[] ToArray<T>(ICollection<T> collection)
{
T[] result = new T[collection.Count];
int i = 0;
foreach(T val in collection)
{
result[i++] = val;
}
}
comme pour toute implémentation ICollection < T >
.
En fait, vous devez référencer System.Core
pour utiliser la classe HashSet < T >
que vous pourriez aussi bien utiliser:
T[] myArray = System.Linq.Enumerable.ToArray(hashSet);
Vous pouvez maintenant le faire encore plus simplement, avec le constructeur List < T >
(les listes sont des tableaux modernes :).
E. g., Dans PowerShell:
$MyNewArray = [System.Collections.Generic.List[string]]::new($MySet)