为什么IList不支持AddRange

时间:2012-07-18 09:27:36

标签: c# .net ilist

List.AddRange()存在,但IList.AddRange()没有 这让我很奇怪。这背后的原因是什么?

2 个答案:

答案 0 :(得分:61)

因为界面应该易于实现,并且不包含“厨房以外的所有东西”。如果您添加AddRange,则应添加InsertRangeRemoveRange(对称)。一个更好的问题是为什么IList<T>接口的扩展方法与IEnumerable<T>接口类似。 (就地SortBinarySearch,...的扩展方法很有用)

答案 1 :(得分:3)

对于那些希望拥有IList上的“ AddRange”,“ Sort”,...扩展方法的人,

下面是UserVehicle::with('vehicle')->whereHas('user', function($query){ $query->where('id', 5); })->get(); 扩展方法:

AddRange

我创建了一个小型库来执行此操作。与在每个项目上重做其扩展方法相比,我发现它更实用。

某些方法比List慢,但它们确实可以完成工作。

这是让他们感兴趣的GitHub:

IListExtension repository