Использование переменных для ссылки на объекты в vb.net (Visual Studio 2008) - PullRequest
1 голос
/ 26 февраля 2010

У меня проблема при использовании переменных в именах объектов.

У меня есть открытый класс, который называется "Танк" В этом классе есть открытое свойство, называемое 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

Ответы [ 3 ]

2 голосов
/ 26 февраля 2010

У вас нет массива танков:

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 голос
/ 26 февраля 2010

Ну, 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 
0 голосов
/ 26 февраля 2010

@ Jball

Нужна была небольшая коррекция, и ваш пример работал просто отлично! Именно то, что мне было нужно!

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

Большое спасибо за вашу помощь!

...