2013-03-07 13 views

答えて

308

HashSetの場合、名前はUnionWithです。

これは、HashSetが動作する明確な方法を示すためです。コレクションのような無作為要素のセットを安全に「追加」することはできません。一部の要素は自然に蒸発することがあります。

しかし私は、IEnumerableをのために過負荷があまりにもあります、UnionWithは "別のHashSetと合併" 後にその名を取ることだと思う:)

+5

私見、 'HashSet'(と 'ISet')は数学的に設定された用語で作成されました。 'UnionWith'はもっと近い言葉でした。 'Except'を除いて、明示的に' Subtract'と名づけられるべきです、数学的に言えば。 –

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

+0

私はちょうど参考に気づいた:)ちょうどFYI: '?:'演算子を使用するのではなく、単純な 'added&= @ this.Add(item)'で十分で、おそらくもっと読みやすくなります。しかし、それはもちろん化粧品です。 – quetzalcoatl

+0

@quetzalcoatl私はちょうどそれについて尋ねようとしていた、それは私にとっては早すぎる。 – RoadieRich

関連する問題