问题
With a list you can do:
list.AddRange(otherCollection);
There is no add range method in a HashSet. What is the best way to add another collection to a HashSet?
回答1:
For HashSet<T>
, the name is UnionWith.
This is to indicate the distinct way the HashSet
works. You cannot safely Add
a set of random elements to it like in Collections
, some elements may naturally evaporate.
I think that UnionWith
takes its name after "merging with another HashSet
", however, there's an overload for IEnumerable<T>
too.
回答2:
This is one way:
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;
}
}
来源:https://stackoverflow.com/questions/15267034/is-there-an-addrange-equivalent-for-a-hashset-in-c-sharp