是否有一个等价的AddRange在C#中一个HashSet(Is there an AddRange

2019-08-17 09:16发布

一个列表,你可以这样做:

list.AddRange(otherCollection);

有一个在一个HashSet没有添加范围的方法。 什么是另一个集合添加到HashSet的最佳方式?

Answer 1:

对于HashSet<T>名称是UnionWith

这是为了表示不同的方式HashSet工作。 你不能安全地Add一组随机元素,它像的Collections ,某些元素可能自然蒸发。

我认为UnionWith以“与其他合并后的名称HashSet但是”,有一个超载IEnumerable<T>太。



Answer 2:

这是一种方式:

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;
    }
}


文章来源: Is there an AddRange equivalent for a HashSet in C#