Mit einer Liste können Sie Folgendes tun:
list.AddRange(otherCollection);
In einem HashSet gibt es keine Methode zum Hinzufügen von Bereichen . Was ist der beste Weg, um einem HashSet eine weitere Sammlung hinzuzufügen?
Mit einer Liste können Sie Folgendes tun:
list.AddRange(otherCollection);
In einem HashSet gibt es keine Methode zum Hinzufügen von Bereichen . Was ist der beste Weg, um einem HashSet eine weitere Sammlung hinzuzufügen?
Antworten:
Denn HashSet<T>der Name ist UnionWith.
Dies soll die unterschiedliche Funktionsweise anzeigen HashSet. Sie können nicht sicher Addeine Reihe von zufälligen Elementen wie in Collections, einige Elemente können natürlich verdunsten.
Ich denke, das UnionWithhat seinen Namen nach "Zusammenführen mit einem anderen HashSet", aber es gibt auch eine Überlastung für IEnumerable<T>.
Dies ist eine Möglichkeit:
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(undISet) wurde mit einem mathematisch festgelegten Term erstellt.UnionWithwar der nähere Begriff. Mit Ausnahme vonExcept, dieSubtractmathematisch gesehen eindeutig als benannt werden sollten .