2013-03-07 16 views

Odpowiedz

308

Dla HashSet nazwa to UnionWith.

Ma to na celu wskazanie odmiennego sposobu działania HashSet. Nie możesz bezpiecznie "dodać" zestawu losowych elementów do niego, tak jak w kolekcjach, niektóre elementy mogą naturalnie wyparować.

myślę że UnionWith bierze swoją nazwę od "połączenia z inną HashSet", jednak nie ma przeciążenia dla IEnumerable też :)

+5

IMHO, 'HashSet' (i 'ISet') został utworzony z matematycznie ustalonym terminem. "UnionWith" był bliższym terminem. Z wyjĘ ... tkiem 'Z wyjĘ ... tkiem', który powinien być nazywane matematycznie mianem" Odejmij ". –

2

Jest to jeden sposób:

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 brakowało oświadczenia zwrotu ... edytowane. – RoadieRich

+0

Właśnie zauważyłem edycję :) Wystarczy FYI: zamiast używać operatora '?:', Proste 'added & = @ this.Add (item)' byłoby wystarczające i prawdopodobnie bardziej czytelne. Ale to tylko kosmetyki. – quetzalcoatl

+0

@quetzalcoatl Właśnie o to pytałem, jest za wcześnie rano dla mnie. – RoadieRich

Powiązane problemy