Con una lista che si può fare:Esiste un equivalente AddRange per un HashSet in C#
list.AddRange(otherCollection);
Non esiste un metodo range Aggiungi in una HashSet. Qual è il modo migliore per aggiungere un'altra raccolta a un HashSet?
Con una lista che si può fare:Esiste un equivalente AddRange per un HashSet in C#
list.AddRange(otherCollection);
Non esiste un metodo range Aggiungi in una HashSet. Qual è il modo migliore per aggiungere un'altra raccolta a un HashSet?
Per HashSet, il nome è UnionWith.
Questo per indicare il modo distinto con cui funziona HashSet. Non puoi "aggiungere" set di elementi casuali in modo sicuro come in Raccolte, alcuni elementi possono evaporare naturalmente.
penso che UnionWith prende il nome dopo "la fusione con un altro HashSet", però, c'è un sovraccarico per IEnumerable troppo :)
Questo è un modo:
public static class Extensions
{
public static bool AddRange<T>(this HashSet<T> @this, IEnumerable<T> items)
{
bool allAdded = true;
foreach (T item in items)
{
allAdded &= @this.Add(item);
}
return allAdded;
}
}
@quetzalcoatl ha perso la dichiarazione di reso ... modificata. – RoadieRich
Ho appena notato la modifica :) Solo FYI: invece di usare l'operatore '?:', Semplice 'aggiunto & = @ this.Add (item)' sarebbe sufficiente e probabilmente più leggibile. Ma ovviamente sono solo i cosmetici. – quetzalcoatl
@quetzalcoatl Stavo per chiedermelo, è troppo presto per me. – RoadieRich
IMHO, 'HashSet' (e 'ISet') è stato creato con un termine matematicamente impostato. 'UnionWith' era il termine più vicino. Tranne che per "Except", che chiaramente dovrebbe essere chiamato "Sottrazione", matematicamente parlando. –