2013-03-07 19 views

Trả lời

308

Đối với HashSet, tên là UnionWith.

Điều này là để cho biết cách thức hoạt động của HashSet. Bạn không thể "Thêm" một cách an toàn các phần tử ngẫu nhiên vào bộ sưu tập như trong Bộ sưu tập, một số phần tử có thể bay hơi một cách tự nhiên.

Tôi nghĩ rằng UnionWith lấy tên sau khi "sáp nhập với HashSet khác", tuy nhiên, có một tình trạng quá tải cho IEnumerable quá :)

+5

IMHO, 'HashSet' (và 'ISet') được tạo với thuật ngữ được đặt toán học. 'UnionWith' là thuật ngữ gần hơn. Ngoại trừ 'Ngoại trừ', rõ ràng nên được đặt tên là' Trừ, 'nói toán học. –

2

Đây là một cách:

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 bỏ lỡ câu trả lời ... đã chỉnh sửa. – RoadieRich

+0

Tôi vừa mới chú ý chỉnh sửa :) Chỉ cần FYI: thay vì sử dụng toán tử '?:', Đơn giản 'thêm & = @ this.Add (mục)' sẽ đủ và có thể đọc được nhiều hơn. Nhưng đó chỉ là mỹ phẩm tất nhiên. – quetzalcoatl

+0

@quetzalcoatl Tôi sắp hỏi về điều đó, đã quá sớm vào buổi sáng cho tôi. – RoadieRich

Các vấn đề liên quan