Với một danh sách bạn có thể làm:Có tương đương AddRange cho một HashSet trong C#
list.AddRange(otherCollection);
Không có phương pháp bổ sung phạm vi trong một HashSet. Cách tốt nhất để thêm bộ sưu tập khác vào một HashSet là gì?
Với một danh sách bạn có thể làm:Có tương đương AddRange cho một HashSet trong C#
list.AddRange(otherCollection);
Không có phương pháp bổ sung phạm vi trong một HashSet. Cách tốt nhất để thêm bộ sưu tập khác vào một HashSet là gì?
Đố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á :)
Đâ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;
}
}
@quetzalcoatl bỏ lỡ câu trả lời ... đã chỉnh sửa. – RoadieRich
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
@quetzalcoatl Tôi sắp hỏi về điều đó, đã quá sớm vào buổi sáng cho tôi. – RoadieRich
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. –