Чи є еквівалент AddRange для HashSet в C #


305

За допомогою списку ви можете:

list.AddRange(otherCollection);

У HashSet не існує методу додавання діапазону . Який найкращий спосіб додати ще одну колекцію до HashSet?

Відповіді:


545

Бо HashSet<T>ім’я - це UnionWith.

Це вказує на виразний спосіб HashSetтворів. Ви не можете безпечно Addвстановити набір випадкових елементів, як, наприклад Collections, деякі елементи можуть природним чином випаровуватися.

Я думаю, що вона отримала UnionWithсвою назву після "злиття з іншим HashSet", однак, тут IEnumerable<T>теж є перевантаження .


9
Імхо, HashSetISet) був створений з математично заданим терміном. UnionWithбув ближчим терміном. За винятком того Except, що явно слід назвати Subtractматематично.
fa wildchild

5

Це один із способів:

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;
    }
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.