如果我在C#中有一个项目列表(例如List<string> items
),我可以同时使用这两个项目:
items.Count()
和
items.Count
获取项目总数。它们都有可用吗?为什么不采用方法.Count()
?
我注意到,如果我过滤列表(并最终得到IEnumerable<string>
):
items.Distinct().Count()
然后必须使用.Count()
。那么为什么List<string>
允许.Count
呢?
答案 0 :(得分:11)
因为System.Linq.Enumerable
上有一个(LINQ) extension method,另一个是property on the class。
答案 1 :(得分:1)
因为它是List<T>
类的Count
属性。因此,List<T>
IEnumerable<T>
Count()
您也可以Count()
扩展。
BTW Count
扩展名只会返回ICollection
属性的值,如果可枚举的源实现ICollection is3 = source as ICollection;
if (is3 != null)
return is3.Count;
接口(此属性声明的地方):
{{1}}
答案 2 :(得分:1)
Count
属性不是扩展名,而是ICollection<T>
的属性,因此属于List<T>
。
Count()
函数是LINQ扩展。它的工作原理是实际计算集合中的项目数,而不是像Count
属性一样在字段中保持计数。
编辑显然,Count()
会调用Count
,如果可用的话。{/ p>