一个列表,你可以这样做:是否有一个等价的AddRange为一个HashSet在C#
list.AddRange(otherCollection);
有一个HashSet的没有添加范围的方法。 将另一个集合添加到HashSet的最佳方式是什么?
一个列表,你可以这样做:是否有一个等价的AddRange为一个HashSet在C#
list.AddRange(otherCollection);
有一个HashSet的没有添加范围的方法。 将另一个集合添加到HashSet的最佳方式是什么?
对于HashSet,名称是UnionWith。
这是为了表明HashSet工作的独特方式。你不能像集合中那样安全地“添加”一组随机元素,有些元素可能会自然消失。
我认为UnionWith “与另一HashSet的合并” 而得名,然而,有一个为IEnumerable的过载过:)
这是一种方式:
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错过了返回声明...编辑。 – RoadieRich 2013-03-07 09:19:00
我刚刚注意到编辑:)只是FYI:而不是使用'::'运算符,简单'添加&= @ this.Add(item)'就足够了,可能更具可读性。但这当然只是化妆品。 – quetzalcoatl 2013-03-07 09:20:14
@quetzalcoatl我正要问这个问题,对我来说,早上太早了。 – RoadieRich 2013-03-07 09:20:58
恕我直言,'HashSet'(和“ISet”)是用数学设定的术语创建的。 'UnionWith'是最接近的术语。除了'Except'外,在数学上它应该被命名为'Subtract'。 – 2015-01-07 03:39:29