在VB.NET中有IEnumerable的Count方法吗?

时间:2012-06-25 10:07:52

标签: vb.net count ienumerable

在C#中如果我有以下对象:

IEnumerable<Product> products;

如果我想知道它包含多少元素,我会使用:

int productCount = products.Count();

但看起来VB.NET中没有这样的方法。有谁知道如何在VB.NET中实现相同的结果?

3 个答案:

答案 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

http://msdn.microsoft.com/en-us/library/bb535181.aspx#Y0

答案 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来说,计数要么是非常昂贵的,要么是危险的。