Esiste un equivalente AddRange per un HashSet in C #


306

Con un elenco puoi fare:

list.AddRange(otherCollection);

Non esiste un metodo di intervallo di aggiunta in un HashSet . Qual è il modo migliore per aggiungere un'altra raccolta a un HashSet?

Risposte:


547

Per HashSet<T>, il nome è UnionWith.

Questo per indicare il modo distinto in cui HashSetfunziona. Non puoi tranquillamente Addun insieme di elementi casuali come in esso Collections, alcuni elementi possono evaporare naturalmente.

Penso che UnionWithprende il nome dopo "fusione con un altro HashSet", tuttavia, c'è anche un sovraccarico IEnumerable<T>.


9
Imho, HashSet(e ISet) è stato creato con un termine impostato matematicamente. UnionWithera il termine più vicino. Tranne Exceptche, che chiaramente dovrebbe essere chiamato come Subtract, matematicamente parlando.
fa wildchild

5

Questo è un modo:

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;
    }
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.