我创建了一个具有父类类型的列表,以便为每个项目循环使用相同的方法。我想了解迭代这些子类的最佳做法。
根据我的阅读,我可以:
但是我对这些方法可能是错误的
该示例是我遇到此问题的简单案例。我想知道一种处理这种情况的最佳方法,例如像这样的父类的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。
答案 0 :(得分:0)
我将错误原因误解为添加到列表中,而实际原因是列表的实例化
New List(of instance)(new player(0,4))
我通过将列表的赋值和声明分开来解决了这个问题。
Dim lstInstances As New List(Of instance)
lstInstances.Add(new player(0,4))