2013-03-07 68 views

回答

308

对于HashSet,名称是UnionWith

这是为了表明HashSet工作的独特方式。你不能像集合中那样安全地“添加”一组随机元素,有些元素可能会自然消失。

我认为UnionWith “与另一HashSet的合并” 而得名,然而,有一个为IEnumerable的过载过:)

+5

恕我直言,'HashSet'(和“ISet”)是用数学设定的术语创建的。 'UnionWith'是最接近的术语。除了'Except'外,在数学上它应该被命名为'Subtract'。 – 2015-01-07 03:39:29

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

@quetzalcoatl错过了返回声明...编辑。 – RoadieRich 2013-03-07 09:19:00

+0

我刚刚注意到编辑:)只是FYI:而不是使用'::'运算符,简单'添加&= @ this.Add(item)'就足够了,可能更具可读性。但这当然只是化妆品。 – quetzalcoatl 2013-03-07 09:20:14

+0

@quetzalcoatl我正要问这个问题,对我来说,早上太早了。 – RoadieRich 2013-03-07 09:20:58

相关问题