【问题标题】:Using variables for referencing objects in vb.net (Visual Studio 2008)在 vb.net (Visual Studio 2008) 中使用变量引用对象
【发布时间】:2010-02-25 21:26:13
【问题描述】:

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

我有一个名为“坦克”的公共课程 在该类中,有一个名为“direction”的整数类型的公共属性。

我不断收到错误: “坦克是一种类型,不能作为一种表达方式” 我在这里做错了什么?

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

【问题讨论】:

    标签: vb.net class object variables instance


    【解决方案1】:

    你没有坦克数组:

    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 循环。

    【讨论】:

    • 感谢您的回答 循环只是作为示例。我正在写一个游戏,我需要一个供玩家 1 使用的坦克和一个供玩家 2 使用的坦克。玩家是整数类型的变量,并且是 1 或 2,具体取决于受控制的玩家在我的代码中,我经常需要更改方向,或坦克的 x,y 坐标,我喜欢将坦克称为 Tank(player).direction 或 Tank(player).X += 5 或 Tank(player).livesleft -= 1 我将拥有测试你的答案
    【解决方案2】:

    嗯,Tank(i) 不等于 Tank1。您需要制作一个坦克列表,将您的实例添加到其中,然后以这种方式访问​​它们。

    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 
    

    【讨论】:

      【解决方案3】:

      @Jball

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

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

      非常感谢您的帮助!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-23
        相关资源
        最近更新 更多