Avec une liste, vous pouvez faire:
list.AddRange(otherCollection);
Il n'y a pas de méthode d'ajout de plage dans un HashSet . Quelle est la meilleure façon d'ajouter une autre collection à un HashSet?
Avec une liste, vous pouvez faire:
list.AddRange(otherCollection);
Il n'y a pas de méthode d'ajout de plage dans un HashSet . Quelle est la meilleure façon d'ajouter une autre collection à un HashSet?
Réponses:
Car HashSet<T>, le nom est UnionWith.
C'est pour indiquer la façon distincte dont HashSetfonctionne le travail. Vous ne pouvez pas en toute sécurité Addun ensemble d'éléments aléatoires comme dans Collections, certains éléments peuvent naturellement s'évaporer.
Je pense que cela UnionWithprend son nom après avoir "fusionné avec un autre HashSet", cependant, il y a une surcharge pour IEnumerable<T>trop.
C'est une façon:
public static class Extensions
{
public static bool AddRange<T>(this HashSet<T> source, IEnumerable<T> items)
{
bool allAdded = true;
foreach (T item in items)
{
allAdded &= source.Add(item);
}
return allAdded;
}
}
HashSet(etISet) a été créé avec un terme défini mathématiquement.UnionWithétait le terme le plus proche. Sauf pourExcept, qui devrait clairement être nommé commeSubtract, mathématiquement parlant.