Visual Basicでは、配列は同じ型の要素を保存する固定長または可変長の構造体です。動的配列は、初期化やサイズ変更に特に注意が必要です。
VB6では、固定サイズと可変サイズの静的および動的配列がありました。VB.NETでは、型安全性を持つ任意の型の一元配列、多次元配列、段階配列が完全に実装されています。
よくあるエラーは以下の通りです。
使用前に常に配列を初期化し、そのサイズを慎重に変更します:
' 宣言 Dim arr() As Integer ' 初期化 ReDim arr(4) ' インデックス 0–4 arr(0) = 1 ' 値を保持しながらサイズを変更 ReDim Preserve arr(6)
主な特徴:
配列を宣言したが初期化を行わなかった場合、どうなりますか?
一元配列の場合、Dim arr() As Integerのように、変数は存在しますが配列自体は確保されません。arr.Lengthにアクセスすると例外が発生します。
多次元配列の両方の次元でサイズを変更するためにReDim Preserveを使用できますか?
いいえ、ReDim Preserveは最後の次元のみを変更することが許可されており、そうでない場合は実行時エラーが発生します。
ReDim Preserveでサイズを増やす際に配列の要素に何が起こりますか?
古い値は保持され、新しい要素にはデフォルト値が設定されます(例えば、Integerの場合は0、参照型の場合はNothing)。
** ネガティブケース
配列が宣言されているが初期化されていない(Dim arr() As Integer)場合、arr.LengthへのアクセスでNullReferenceExceptionが発生します。
長所:
短所:
** ポジティブケース
配列は常にReDimを介して明示的に初期化され、サイズ変更はメインループの外でのみ行い、頻繁に変更されるリストにはList(Of Integer)を使用します。
長所:
短所: