タイトル : Re^7: 配列に関して教えてください>< 投稿日 : 2010/12/20(Mon) 12:48 投稿者 : 魔界の仮面弁士
> 変数の宣言ですが、String型になっていますがなぜでしょう。 座標を管理するのですから、本来は Integer あるいは Point あたりが妥当でしょうね。 > 「Redim」または「Redim Preserve」で配列のサイズを指定すれば可変になります。 誤解を恐れずに言えば、VB.NET では配列の要素数を変更できません。 ReDim 後の配列は、実際には、以前の配列とは別のオブジェクトとして生成されます。 ReDim Preserve というのも、実際には配列の要素数を変更しているわけではなく、 新たなサイズの配列を新規に作成し、そこに元のデータをコピーするだけだったりします。 Dim a(1) As Integer a(0) = 111 a(1) = 222 Dim b() As Integer b = a '配列の参照コピー MsgBox(a(0)) '111 と表示される。 MsgBox(b(0)) '111 と表示される。 a(0) = 1000 'a 側の値を 111 → 1000 に変更 MsgBox(a(0)) '1000 に変更される。 MsgBox(b(0)) '1000 に変更される(同じ配列なので)。 b(1) = 2000 'b 側の値を 222 → 2000 に変更 MsgBox(a(1)) '2000 に変更される(同じ配列なので)。 ReDim Preserve a(2) '実は新たな配列を作り直している a(0) = 9999 '新規配列の値を 1000 → 9999 に変更 MsgBox(a(0)) '新規配列は 9999 に変更されているが MsgBox(b(0)) '元の配列は 1000 のまま。 |