【发布时间】:2016-09-25 22:38:03
【问题描述】:
是否有一种特殊的语法可以只遍历集合中某种类型的元素?
例如:
For Each number As Integer In {0, "string", 4.6, 7, someClassInstance}
Next
我想要一个与上面类似的语法,它只会循环遍历数组中的第一个和第四个元素。
但是,根据the documentation:
"元素的数据类型必须是group的元素的数据类型可以转换成它。"
所以我不能使用上面的语法来做这样的事情。
我在代码中处理的实际示例是:
Public MustInherit Class BaseClass
End Class
Public Class SubClass1 : Inherits BaseClass
Public x As Integer
End Class
Public Class SubClass2 : Inherits BaseClass
End Class
主代码:
Dim someList As List(Of BaseClass)
For Each instance In someList
'Do something with instance.x
Next
所以我需要检查instance 是否属于SubClass1 类型,并在每次使用x 时进行转换。
我不久前向this question 询问了 Swift。我希望在 VB 中得到类似的答案。
【问题讨论】:
-
但是那个组代表什么?通常你在同构集上做
For Each。该数据必须存储As Object -
@Plutonix 是的,这是一个对象数组。也许更好的例子是在我的代码中,我有一个
MustInherit类的集合,并且只想遍历特定类的对象。 -
我不知道在 VB 中,但在 C# 中它是“是”。 msdn.microsoft.com/en-us/library/scekt9xw.aspx
标签: vb.net collections foreach casting