在vb.net中使用变量引用对象(Visual Studio 2008)

在vb.net中使用变量引用对象(Visual Studio 2008),vb.net,class,object,variables,instance,Vb.net,Class,Object,Variables,Instance,我在对象名中使用变量时遇到问题 我有一门公共课,叫做“坦克” 在该类中,有一个称为整数类型的“direction”的公共属性 我不断得到错误: “Tank是一个类型,不能用作表达式” 我做错了什么 Public Class mainroutines() ' Create Instances of tank Private Tank1 As New Tank() Private Tank2 As New Tank() 'Loop trough objects and set the pr

我在对象名中使用变量时遇到问题

我有一门公共课,叫做“坦克” 在该类中,有一个称为整数类型的“direction”的公共属性

我不断得到错误: “Tank是一个类型,不能用作表达式” 我做错了什么

Public Class mainroutines()

' Create Instances of tank  

Private Tank1 As New Tank()
Private Tank2 As New Tank()

'Loop trough objects and set the property value

dim i as integer
For i = 1 to 2
Tank(i).direction = 1
next i

End class
那么,
储罐(i)
并不等同于
储罐1
。您需要创建一个坦克列表,将实例添加到其中,并以这种方式访问它们

Public Class mainroutines() 

' Create Instances of tank '  

Dim allTanks As List(Of Tank) = New List(Of Tank) 
allTanks.Add(New Tank())
allTanks.Add(New Tank())

'Loop through objects and set the property value '

dim i as integer 
For i = 1 to 2 
allTanks(i).direction = 1 
next i 

您没有坦克阵列:

Public Class mainroutines()

' Create Instances of tank  

Private Tank1 As New Tank()
Private Tank2 As New Tank()

'Loop trough objects and set the property value
Dim tanks() As Tank

tanks(0) = Tank1
tanks(1) = Tank2

For i As Integer = 1 To 2
   tanks(i).direction = 1
next

End class
如果您使用的是Visual Studio 2008,则可以使用:

Private Tank1 As New Tank() With { .Direction = 1}
Private Tank2 As New Tank() With { .Direction = 1}
因此,您根本不需要For循环。

@Jball

它需要一个小的修正,你的例子工作得很好! 正是我需要的

Dim alltanks As List(Of Tank) = New List(Of Tank)

非常感谢你的帮助

谢谢你的回答,循环只是一个例子。我正在写一个游戏,我需要一个坦克给玩家1,一个给玩家2。player是一个整数类型的变量,是1或2,这取决于在我的代码中控制的播放器。我经常需要更改方向,或者坦克的x,y坐标,我喜欢将坦克称为坦克(玩家)。方向或坦克(玩家)。x+=5或坦克(玩家)。livesleft-=1我必须测试你的答案