在C#中如果我有以下对象:
IEnumerable<Product> products;
如果我想知道它包含多少元素,我会使用:
int productCount = products.Count();
但看起来VB.NET中没有这样的方法。有谁知道如何在VB.NET中实现相同的结果?
答案 0 :(得分:3)
Count
在VB.NET中可用:
Dim x As New List(Of String)
Dim count As Integer
x.Add("Item 1")
x.Add("Item 2")
count = x.Count
答案 1 :(得分:0)
在.net的更高版本中,有一个名为Count()
的扩展方法与IEnumerable<T>
相关联,如果基础枚举器支持其中任何一个,则会使用IList<T>.Count()
或ICollection.Count()
那些,或者如果没有,将会迭代计算这些项目。
一个重要的警告并不总是考虑到这一点:虽然IEnumerable<DerivedType>
通常可以替代IEnumerable<BaseType>
,但实现IList<DerivedType>
但未实现ICollection
的类型可能在用作IEnumerable<DerivedType>
时有效计算,但在转换为IEnumerable<BaseType>
时不会被计数(即使该类支持返回正确结果的IList<DerivedType>.Count()
方法,系统也不会显示为此 - 它会寻找IList<BaseType>
,而不会实现。
答案 2 :(得分:0)
通常,IEnumerable不会有Count,除非底层集合支持(例如List)。
考虑一下通用IEnumerable实现Count方法需要做些什么。由于IEnumerable仅在请求数据时执行,因此为了执行Count,它需要迭代直到结束,跟踪它找到了多少元素。
通常,此迭代将结束,但您可以设置永远循环的查询。对于IEnumerable来说,计数要么是非常昂贵的,要么是危险的。