ด้วยรายการที่คุณสามารถทำได้:
list.AddRange(otherCollection);
ไม่มีวิธีการที่หลากหลายเพิ่มในเป็นHashSet วิธีที่ดีที่สุดในการเพิ่มคอลเล็กชันอื่นใน HashSet คืออะไร
ด้วยรายการที่คุณสามารถทำได้:
list.AddRange(otherCollection);
ไม่มีวิธีการที่หลากหลายเพิ่มในเป็นHashSet วิธีที่ดีที่สุดในการเพิ่มคอลเล็กชันอื่นใน HashSet คืออะไร
คำตอบ:
สำหรับชื่อเป็นHashSet<T>UnionWith
นี่คือการระบุวิธีการHashSetทำงานที่ชัดเจน คุณไม่สามารถAddตั้งค่าองค์ประกอบสุ่มให้เหมือนกับที่ปลอดภัยได้Collectionsองค์ประกอบบางอย่างอาจระเหยไปตามธรรมชาติ
ฉันคิดว่าUnionWithใช้ชื่อหลังจาก "รวมเข้ากับอีกHashSet" อย่างไรก็ตามมีเกินสำหรับIEnumerable<T>เกินไป
นี่คือวิธีหนึ่ง:
public static class Extensions
{
public static bool AddRange<T>(this HashSet<T> source, IEnumerable<T> items)
{
bool allAdded = true;
foreach (T item in items)
{
allAdded &= source.Add(item);
}
return allAdded;
}
}
HashSet(และISet) ถูกสร้างขึ้นด้วยคำที่กำหนดทางคณิตศาสตร์UnionWithเป็นระยะใกล้ ยกเว้นExceptซึ่งควรตั้งชื่ออย่างชัดเจนว่าการSubtractพูดทางคณิตศาสตร์