Za pomocą listy możesz:
list.AddRange(otherCollection);
W HashSet nie ma metody dodawania zakresu . Jaki jest najlepszy sposób na dodanie kolejnej kolekcji do HashSet?
Za pomocą listy możesz:
list.AddRange(otherCollection);
W HashSet nie ma metody dodawania zakresu . Jaki jest najlepszy sposób na dodanie kolejnej kolekcji do HashSet?
Odpowiedzi:
Bo HashSet<T>
nazwa to UnionWith
.
Ma to na celu wskazanie odrębnego sposobu HashSet
działania. Nie możesz bezpiecznie Add
zestaw losowych elementów, jak w Collections
niektórych, niektóre elementy mogą naturalnie wyparować.
Myślę, że UnionWith
bierze to swoją nazwę po „połączeniu z innym HashSet
”, ale jest też przeciążenie IEnumerable<T>
.
To jest jeden sposób:
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
(iISet
) został stworzony z matematycznie ustalonym terminem.UnionWith
był bliższym terminem. Z wyjątkiemExcept
, które wyraźnie należy nazwaćSubtract
matematycznie.