久しぶりにVBを触っていると、いろいろと他の言語とは異なる部分があって戸惑うことがあるけど、今回は配列でハマったので備忘録メモメモ。
[配列の宣言]
Dim ArrayIntA As Integer()
Dim ArrayIntB() As Integer
AもBも、どちらも同じように使える。ただ、宣言と同時に割当を行う場合はBの方でしかできないようなので、Bの書き方が良さそう。
Dim ArrayIntC() As Integer = {0, 1, 2, 3}
Dim ArrayIntD(4) As Integer
こんな感じ。
でも、ArrayIntD(4)と宣言すると、配列はなぜか5つできる。指定した「4」はインデックス番号の最大値のようで、作られる配列は0~4までの合計5つ、ってことらしい。
なので、
Dim ArrayIntC() As Integer = {0, 1, 2, 3}
Dim ArrayIntD(ArrayIntC.Count) As Integer
としてしまうと、ArrayIntC.Countは4なのに、ArrayIntD.Countは5になってしまう。Dの要素数をCと同じにしたい場合は、
Dim ArrayIntD(ArrayIntC.Count - 1) As Integer
とする必要がある。要素数を変更したい場合は、
ArrayIntD = New Integer(5)
としたいところだけど、これはエラーになる。この場合はReDimを使って
ReDim ArrayIntD(5)
とする必要がある。
コメント