.net - MyArray中的每个Obj作为MyObject - 如果没有实现任何东西,这是否可行?

时间:2009-10-25 06:40:27

标签: .net vb.net loops foreach

我正在使用VS2008。

以下是否可以使用非常简单的类(见下文)执行以下VB.NET?

for each CurrentObject as MyObject in MyArray
  'access current object
next

“简单的课程”:

Class MyObject
  public I as integer
end class

我似乎记得需要iEnumerable的东西,但我的编译器并不抱怨。

修改澄清

2 个答案:

答案 0 :(得分:1)

For Each仅适用于实现IEnumerable的类型,通常是集合。您应该知道,对于集合的每个元素发生的项目转换是在运行时完成的,因此即使代码编译,它也可能在执行时失败。

您可以在MSDN上阅读有关此内容的更多信息:For Each...Next Statement (Visual Basic)

答案 1 :(得分:1)

这完全没问题。

在.NET内部,您的数组MyArray实现了IEnumerable,这是编译器在使用此类foreach循环时所查找和使用的内容。

所以你不需要再做任何事了。

实际上,如果MyArray已经被声明为MyObject数组,则不需要转换为MyObject,所以

Dim MyArray(20) As MyObject
for each CurrentObject in MyArray  
    'access current object
next

将始终正常工作,因为CurrentObject将始终为MyObject类型。

如果没有什么可以告诉.NET你的数组包含什么类型,你只需要演员。