dポイントプレゼントキャンペーン実施中!

お世話になります。

VB.net(visual studio 2005)の配列について教えて下さい。

以下の様に3次元の配列を宣言したとします(要素数は宣言せず)

Protected strArray(,,) As String

その後、プログラムのイニシャライズルーチン中で要素数を設定しています。

ReDim Preserve strArray(2,5,10)

プログラム中でこの配列の要素数が増える事があります。
一番右の配列 10 を 15 などに増やす事は redim で可能だとおもわれますが
真ん中の 5 を 8 などに増やしたいのです。
その際、配列に保存した情報は消えてしまってもかまわないので
要素数を一度リセットし、再度要素数を宣言したいのですがリセットの方法がわかりません。

ご教授お願い致します。

A 回答 (1件)

>その際、配列に保存した情報は消えてしまってもかまわないので


>要素数を一度リセットし、再度要素数を宣言したいのですがリセットの方法がわかりません。
配列に保存した情報は消えてもよいなら、
RedimでOKです。(Preserve を付けない)
Preserve は中身を保証するときにつけます。

Dim strArray(,,) As String
Dim r1, r2, r3 As Long
ReDim strArray(2, 5, 10)
r1 = UBound(strArray, 1)
r2 = UBound(strArray, 2)
r3 = UBound(strArray, 3)
MsgBox(r1 & ":" & r2 & ":" & r3)
ReDim strArray(3, 8, 15)
r1 = UBound(strArray, 1)
r2 = UBound(strArray, 2)
r3 = UBound(strArray, 3)
MsgBox(r1 & ":" & r2 & ":" & r3)

上記を実行してください。
配列のサイズが変更されていることが確認できます。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

> 配列に保存した情報は消えてもよいなら、
> RedimでOKです。(Preserve を付けない)
> Preserve は中身を保証するときにつけます。

Preserve の意味は理解していたのですが
「一番右の要素数の変更しか許していない」という仕様が
(Redim Preserveではなく)Redimの時でも許可されていないとなぜか思い込んでいました。

少し試してみれば分かる事でしたがぽっかりと抜け落ちていたようです。
ありがとうございました。

お礼日時:2016/10/14 11:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!