遍历子类的最佳实践

时间:2019-06-10 11:21:22

标签: .net vb.net

我创建了一个具有父类类型的列表,以便为每个项目循环使用相同的方法。我想了解迭代这些子类的最佳做法。

根据我的阅读,我可以:

  • 分别遍历每种类型(最糟糕的情况)
  • 在父类上实现IEnumerator
  • 创建包装器类 容纳所有孩子

但是我对这些方法可能是错误的

该示例是我遇到此问题的简单案例。我想知道一种处理这种情况的最佳方法,例如像这样的父类的4个或4个以上子类,并且可以任意灵活地对任何数字进行处理。

    Class instance
        public Property intX As Short = 0
        public Property intY As Short = 0
        Sub New(X As Integer, Y As Integer)
            intY = Y
            intX = X
        End Sub
    End Class
    Class player
        Inherits instance
        Public Sub move(key As ConsoleKeyInfo)
            Select Case key.KeyChar
                Case "w"
                    intY -= 1
                Case "a"
                    intX -= 1
                Case "s"
                    intY += 1
                Case "d"
                    intX += 1
                Case Else
                    Environment.Exit(0)
            End Select
        End Sub
lstInstance As List(Of instance)

for each instance In lstInstance
Console.SetCursorPosition(instance.intX, instance.intY)
next

当将类型设置为父级时,我希望该列表接受子级。相反,我遇到了运行时异常System.InvalidCastException。

1 个答案:

答案 0 :(得分:0)

我将错误原因误解为添加到列表中,而实际原因是列表的实例化

New List(of instance)(new player(0,4))

我通过将列表的赋值和声明分开来解决了这个问题。

Dim lstInstances As New List(Of instance)
lstInstances.Add(new player(0,4))