• ベストアンサー

Visual Studio 2003での2次元可変長配列でエラー

Visual Studio 2003での2次元可変長配列でエラーが発生します。 エラー内容 'System.NullReferenceException' のハンドルされていない例外が microsoft.visualbasic.dll で発生しました。 追加情報 : オブジェクト参照がオブジェクト インスタンスに設定されていません。 ソースは dim return_array()() For i As Integer = 0 To 5 Step 1 ReDim Preserve return_array(i)(6) Next のような感じです。 ループを使う必要があるのはreturn_array()()が状況に応じてサイズを変更が必要なためです。

質問者が選んだベストアンサー

  • ベストアンサー
  • SUPER-NEO
  • ベストアンサー率38% (706/1857)
回答No.1

ReDimは、オブジェクトに対して行ないます。 質問者さんが書いたコードは、 変数名を定義しただけですから、これはオブジェクトとは言いません。 つまり、何もないNull値の変数に対して、配列の拡張を表すコードを 実行したわけですから、Null例外が発生します。

izayoimizuki
質問者

補足

代入を行っている事を書き忘れました。 dim return_array()() For i As Integer = 0 To 5 Step 1 ReDim Preserve return_array(i)(6) return_array(i) = 代入される1次元配列 Next の形が成立しています。

その他の回答 (1)

回答No.2

原因はNo.1さんの通りとしてではどうするのかといえば。 dim return_array()() 'まず0~5までの配列にして・・・ ReDim return_array(5) For i As Integer = 0 To return_array.Length - 1 '個々の配列を0~6までの配列にする。 ReDim return_array(i)(6) Next Preserveは必要ないかと思われます。

izayoimizuki
質問者

お礼

自己解決できました。 ループ脱出の条件が間違っており 配列を伸張しすぎた事が原因だったようです。 ありがとうございました。

izayoimizuki
質問者

補足

元々値が入っている事そして事前に必要な要素数の確定が困難な事などから条件に必要な要素数をループで確定したいと言う状況です。 また確定条件が「要素数-空白の要素数」なので実質ループを使わなければ必要要素数の確定が出来ないような状況です。

関連するQ&A