tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル 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 のまま。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。