什么是在 .Net 中具有 Count 属性的最小接口?

5
我需要更改一个只有一个参数且接受一系列对象的方法。我需要找到继承树中具有Count属性的最低接口。到目前为止,我一直在使用IEnumerable,但是由于它没有Count,所以我需要将其更改为可能性更广泛的更大接口,以便该方法可以处理最多类型的系列(集合、列表、数组等)。
提前致谢。
3个回答

6

ICollection 增加了 Count 属性。

正如 @Joren 所指出的那样,如果你愿意将你的集合泛型化,IEnumerable<T> 有扩展方法 Count<T>()。然而,正如 @Joel Coehoorn 指出的那样,不建议使用此方法,因为它会强制迭代序列。


这是在层次树中最低的吗? - Ignacio Soler Garcia
3
Count<T> 方法是 IEnumerable<T> 的扩展方法,而不是 ICollection<T> 的方法。(ICollection<T> 只有 Count 属性,它继承自 ICollection。)当然,ICollection<T> 继承自 IEnumerable<T>,所以这个扩展方法在 ICollection<T> 实例上也是有效的。我的观点是,对于 Count<T> 方法,IEnumerable<T> 比 ICollection<T> 更基础。 - Joren
是的,ICollection 是添加 Count 属性的接口。其他具有该属性的东西通常会实现 ICollection(如 IList、IDictionary 等)。 - David Neale
1
不要使用IEnumerable的.Count扩展方法,它会强制迭代序列。 - Joel Coehoorn

5

4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接