方法 : 配列のサイズを変更する
更新 : 2007 年 11 月
配列変数のサイズを変更するには、新しい配列オブジェクトを代入します。標準の代入ステートメントおよび ReDim ステートメント (Visual Basic) のいずれかを使用できます。いずれの場合でも元の配列は新しい配列によって完全に置換され、配列変数は新しい配列を指します。
配列のサイズを変更することは、効率的なメモリ管理に役立ちます。たとえば、最初は小さなサイズの配列を作成し、より多くの要素が必要になった場合にサイズを大きくできます。または、最初は大きなサイズの配列を作成し、全部を使用する必要がなくなったらサイズを小さくしていくこともできます。この技法によって、必要なときにだけ追加のメモリを使用できます。
標準の代入ステートメントを使用して配列変数のサイズを変更するには
新しい次元の長さを指定し、新しい配列オブジェクトを作成します。
新しい配列オブジェクトを配列変数に代入します。
Dim thisArrayVariable() As Integer = New Integer(99) {} thisArrayVariable = New Integer(49) {}
ReDim ステートメントを使用して配列変数のサイズを変更するには
ReDim ステートメントで配列変数の新しい次元の長さを指定します。
Dim thisArrayVariable() As Integer = New Integer(99) {} ReDim thisArrayVariable(9)
ReDim を使って配列のサイズを変更すると、通常、配列内にある要素の既存の値は失われます。しかし、ReDim ステートメントに Preserve キーワードを含めると、既存の値を保持できます。
既存の要素の値を維持しながら配列変数のサイズを変更するには
ReDim ステートメントで配列変数の新しい次元の長さを指定します。
ReDim ステートメントに Preserve キーワードを追加します。次の例では、新しい配列を作成し、その要素を既存の arrayToIncrease 配列の対応する要素で初期化します。次に、この初期化した配列を arrayToIncrease 配列変数に代入します。
Dim arrayToIncrease(9, 49) ReDim Preserve arrayToIncrease(9, 199)
多次元配列で Preserve を使った場合、変更できるのは最後の次元の長さだけです。他の次元を変更しようとすると、ArrayTypeMismatchException 例外が発生します。
Preserve キーワードを使用して大きな配列のサイズを変更する場合、Visual Basic によって既存のすべての要素が新しい配列にコピーされることに注意してください。これによってパフォーマンスが低下する可能性があります。