Bir listeyle şunları yapabilirsiniz:
list.AddRange(otherCollection);
Bir HashSet içinde aralık ekleme yöntemi yoktur . HashSet'e başka bir koleksiyon eklemenin en iyi yolu nedir?
Bir listeyle şunları yapabilirsiniz:
list.AddRange(otherCollection);
Bir HashSet içinde aralık ekleme yöntemi yoktur . HashSet'e başka bir koleksiyon eklemenin en iyi yolu nedir?
Yanıtlar:
Çünkü HashSet<T>
adı UnionWith
.
Bu, HashSet
çalışmaların farklı yolunu göstermek içindir . İçinde Add
olduğu gibi rasgele bir dizi öğeyi güvenle kullanamazsınız Collections
, bazı öğeler doğal olarak buharlaşabilir.
Bence bu UnionWith
"başka biriyle birleştikten sonra" adını alır HashSet
, ancak, aşırı yük IEnumerable<T>
de var.
Bu bir yol:
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
(veISet
) matematiksel olarak ayarlanmış bir terimle oluşturuldu.UnionWith
yakın terimdi. MatematikselExcept
olarak açık bir şekilde adlandırılması dışındaSubtract
.