配列の再定義

 配列を宣言した後、要素数を越える範囲を利用しようとするとエラーが発生します。その場合、配列の要素数を宣言しなおして利用することができます。その時に、すでに格納している値を残したままにする方法と、すでに格納している値を消去する方法があります。

配列再定義の書式
ReDim 配列名(要素数指定)
ReDim Preserve 配列名(要素数指定)

○ プロジェクト

 次のようにプロジェクトを作成してください。

プロジェクトの種類 コンソール アプリケーション
プロジェクト名 ReDimTest

サンプルダウンロード

○ プログラム

 次のようにプログラムを入力してください。

  1. Sub Main()
  2.  '配列の宣言
  3.  Dim numbers As Integer() = {1, 2, 3}
  4.  Dim fruits As String() = {"りんご", "みかん"}
  5.  '変更前の配列
  6.  Console.WriteLine("*****変更前の配列*****")
  7.  Console.WriteLine("numbersの要素数: " & numbers.Length)
  8.  Console.WriteLine(numbers(0))
  9.  Console.WriteLine(numbers(1))
  10.  Console.WriteLine(numbers(2))
  11.  Console.WriteLine("fruitsの要素数: " & fruits.Length)
  12.  Console.WriteLine(fruits(0))
  13.  Console.WriteLine(fruits(1))
  14.  '配列の要素数変更
  15.  ReDim numbers(3)
  16.  ReDim Preserve fruits(2)
  17.  '増やした要素に値を代入
  18.  numbers(3) = 4
  19.  fruits(2) = "もも"
  20.  '変更後の配列
  21.  Console.WriteLine("*****変更後の配列*****")
  22.  Console.WriteLine("numbersの要素数: " & numbers.Length)
  23.  Console.WriteLine(numbers(0))
  24.  Console.WriteLine(numbers(1))
  25.  Console.WriteLine(numbers(2))
  26.  Console.WriteLine(numbers(3))
  27.  Console.WriteLine("fruitsの要素数: " & fruits.Length)
  28.  Console.WriteLine(fruits(0))
  29.  Console.WriteLine(fruits(1))
  30.  Console.WriteLine(fruits(2))
  31.  Console.ReadLine()
  32. End Sub

○ 実行結果

*****変更前の配列*****
numbersの要素数: 3
1
2
3
fruitsの要素数: 2
りんご
みかん
*****変更後の配列*****
numbersの要素数: 4
0
0
0
4
fruitsの要素数: 3
りんご
みかん
もも

○ 解説

 19行目で配列numbersの要素数を変更していますが、Preserveキーワードを指定していないため保存されている値は消去されます。29行目からの配列numbersの表示で確認できるように代入していないほかの要素は初期化されています。

配列の再定義(初期化される)
配列の再定義(初期化される)

 20行目は配列fruitsの要素数を変更しています。Preserveキーワードを指定しているので保存された値は保持されたまま要素数が増えています。34行目からの配列fruitsの表示で確認できるように代入していないほかの要素は値がそのまま残っています。

配列の再定義(初期化されない)
配列の再定義(初期化されない)

前へ   次へ