一位同事今天问我如何在一个集合中添加一个范围。他有一个继承自Collection<T>的类。有一个已包含某些项的那种类型的get-only属性。他希望将另一个集合中的项添加到属性集合中。他怎么能以C#3友好的方式这么做呢?(请注意有关get-only属性的约束,它阻止执行Union和重新分配之类的解决方案。)
当然,有财产的前夫。添加将有效。但List<T>-style AddRange则要优雅得多。
编写扩展方法非常容易:
public static class CollectionHelpers
{
public static void AddRange<T>(this ICollection<T> destination,
IEnumerable<T> source)
{
foreach (T item in source)
{
destination.Add(item);
}
}
}但我有种感觉我在重新发明方向盘。我在System.Linq或莫雷林中没有发现类似的东西。
糟糕的设计?打电话给Add?错过了显而易见的吗?
发布于 2009-09-25 00:40:37
不,这看起来很合理。有一个List.AddRange()方法基本上就是这样做的,但是要求您的集合是一个具体的List<T>。
https://stackoverflow.com/questions/1474863
复制相似问题