2010-12-01 12 views

Antwort

36

Sie können ein dynamisches Array verwenden, wenn Sie es nicht die Anzahl der Werte wissen enthalten bis zur Laufzeit:

Dim Zombies() As Integer 
ReDim Zombies(NumberOfZombies) 

Oder Sie könnten alles mit einer Aussage tun, wenn Sie ein Array erstellen, von einem Verfahren vor Ort ist:

ReDim Zombies(NumberOfZombies) As Integer 

Festgröße Arrays die Anzahl der Elemente enthalten erfordern zur Übersetzungszeit bekannt sein. Aus diesem Grund können Sie keine Variable verwenden, um die Größe des Arrays festzulegen. Die Werte einer Variablen sind per Definition variabel und nur zur Laufzeit bekannt.

Sie könnten eine Konstante verwenden, wenn Sie den Wert der Variablen wüssten sich nicht ändern:

Const NumberOfZombies = 2000 

aber es gibt keine Möglichkeit, zwischen Konstanten und Variablen zu werfen. Sie haben deutlich unterschiedliche Bedeutungen.

+1

Warum, aber das ist eine falsche Antwort. 'ReDim Zombies (NumberOfZombies)' würde ein Array mit 'NumberOfZombies + 1'-Elementen deklarieren, anstatt nur' NumberOfZombies'. – Ans

1

Sie müssen eine Konstante verwenden.

CONST NumberOfZombies = 20000 
Dim Zombies(NumberOfZombies) As Zombies 

oder wenn Sie eine Variable, die Sie es auf diese Weise zu tun haben, verwenden:

Dim NumberOfZombies As Integer 
NumberOfZombies = 20000 

Dim Zombies() As Zombies 

ReDim Zombies(NumberOfZombies) 
+0

Gibt es eine bessere Möglichkeit, NumberOfZombies als CONST-Recht in der Dimensionsdefinition zu verwenden? Dim Zombies (CONST NumberOfZombies) als neuer Zombie – sooprise

+0

Ich reichte meine Antwort ein, bevor ich mit der Eingabe fertig war. – carny666

+0

Oh, ich sehe, so kann eine Variable verwendet werden, um eine Dimension zu definieren, wenn Redim verwendet wird, das ist hilfreich zu wissen, danke! – sooprise

3

Sie müssen die ReDim-Anweisung verwenden, um Arrays dynamisch zu sortieren.

Public Sub Test() 
    Dim NumberOfZombies As Integer 
    NumberOfZombies = 20000 
    Dim Zombies() As New Zombie 
    ReDim Zombies(NumberOfZombies) 

End Sub 

Dies kann seltsam erscheinen, wenn Sie bereits die Größe Ihres Arrays kennen, aber da gehen Sie!

2

Sie können auch das Sammelobjekt verwenden. Dies funktioniert in der Regel besser als ein Array für benutzerdefinierte Objekte, da es dynamisch Größen und hat Methoden für:

  • hinzufügen
  • Count
  • entfernen
  • Artikel (Index)

plus seine normalerweise einfacher, eine Sammlung auch zu durchlaufen, da Sie die für jede Struktur sehr leicht mit einer Sammlung verwenden können.

Verwandte Themen