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 HashSet
fonctionne le travail. Vous ne pouvez pas en toute sécurité Add
un ensemble d'éléments aléatoires comme dans Collections
, certains éléments peuvent naturellement s'évaporer.
Je pense que cela UnionWith
prend 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.