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 Add
eine Reihe von zufälligen Elementen wie in Collections
, einige Elemente können natürlich verdunsten.
Ich denke, das UnionWith
hat 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.UnionWith
war der nähere Begriff. Mit Ausnahme vonExcept
, dieSubtract
mathematisch gesehen eindeutig als benannt werden sollten .