変数に基づいて配列のサイズを設定できないのはなぜですか?これを回避する最善の方法は何ですか?
Dim NumberOfZombies as integer
NumberOfZombies = 20000
Dim Zombies(NumberOfZombies) as New Zombie
実行時まで含まれる値の数がわからない場合は、動的配列を使用できます。
Dim Zombies() As Integer
ReDim Zombies(NumberOfZombies)
または、プロシージャに対してローカルな配列を作成する場合は、1つのステートメントですべてを実行できます。
ReDim Zombies(NumberOfZombies) As Integer
固定サイズの配列コンパイル時に既知の要素の数が必要です。これが、変数を使用して配列のサイズを設定できない理由です。定義により、変数の値は可変であり、実行時にのみ認識されます。
変数の値が変更されないことがわかっている場合は、定数を使用できます。
Const NumberOfZombies = 2000
しかし、定数と変数の間でキャストする方法はありません。それらは明確に異なる意味を持っています。
配列のサイズを動的に変更するには、ReDimステートメントを使用する必要があります。
Public Sub Test()
Dim NumberOfZombies As Integer
NumberOfZombies = 20000
Dim Zombies() As New Zombie
ReDim Zombies(NumberOfZombies)
End Sub
配列のサイズがすでにわかっている場合、これは奇妙に思えるかもしれませんが、そこに行きます!
Collectionオブジェクトの使用について調べることもできます。これは通常、カスタムオブジェクトの配列よりもうまく機能します。
さらに、コレクションではfor ... each構造を非常に簡単に使用できるため、通常はコレクションをループするのも簡単です。
定数を使用する必要があります。
CONST NumberOfZombies = 20000
Dim Zombies(NumberOfZombies) As Zombies
または、変数を使用する場合は、次の方法で行う必要があります。
Dim NumberOfZombies As Integer
NumberOfZombies = 20000
Dim Zombies() As Zombies
ReDim Zombies(NumberOfZombies)