มี AddRange ที่เทียบเท่ากับ HashSet ใน C # หรือไม่


306

ด้วยรายการที่คุณสามารถทำได้:

list.AddRange(otherCollection);

ไม่มีวิธีการที่หลากหลายเพิ่มในเป็นHashSet วิธีที่ดีที่สุดในการเพิ่มคอลเล็กชันอื่นใน HashSet คืออะไร

คำตอบ:


546

สำหรับชื่อเป็นHashSet<T>UnionWith

นี่คือการระบุวิธีการHashSetทำงานที่ชัดเจน คุณไม่สามารถAddตั้งค่าองค์ประกอบสุ่มให้เหมือนกับที่ปลอดภัยได้Collectionsองค์ประกอบบางอย่างอาจระเหยไปตามธรรมชาติ

ฉันคิดว่าUnionWithใช้ชื่อหลังจาก "รวมเข้ากับอีกHashSet" อย่างไรก็ตามมีเกินสำหรับIEnumerable<T>เกินไป


9
Imho, HashSet(และISet) ถูกสร้างขึ้นด้วยคำที่กำหนดทางคณิตศาสตร์ UnionWithเป็นระยะใกล้ ยกเว้นExceptซึ่งควรตั้งชื่ออย่างชัดเจนว่าการSubtractพูดทางคณิตศาสตร์
fa wildchild

5

นี่คือวิธีหนึ่ง:

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;
    }
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.