VB.NETでN個の要素からなる配列を作成する方法と参照方法を教えてください
要素数N個の配列の宣言と参照方法についての質問です。
質問1
開始インデックスを0とするのがよいのか、1とするのが良いのか
質問2
要素数Nの配列が必要なとき、宣言時にN-1を指定するのか、それとも別のやり方があるのか
VB.NET初心者です。
配列の範囲外アクセスの挙動を調べる勉強用のプログラムを書いていて、インデックスが0から10までの要素にアクセスしてみました。
インデックス0と10ではエラーとならず、11でエラーとなりました。
インデックス10でエラーとなることを想定していたのですが、エラーとなりませんでした。
要素数を調べてみると11でした。想定は10なのでこれも意外でした。
【ソースコード】
Dim idx
Dim a(10)
idx = 0
a(idx) = idx
Console.WriteLine("a(" & idx & ")= " & a(idx))
idx = 10
a(idx) = idx
Console.WriteLine("a(" & idx & ")= " & a(idx))
idx = 11
a(idx) = idx
Console.WriteLine("a(" & idx & ")= " & a(idx))
【実行結果】
a(0)= 0
a(10)= 10
Unhandled exception. System.IndexOutOfRangeException: Index was outside the bounds of the array.
at ConsoleApp1.Program.Main(String[] args) in 省略\Program.vb:line 63
10を指定して配列を宣言すると要素数が11個の配列ができます。
【ソースコード】
Dim a(10)
Console.WriteLine("a.length = [" & a.Length & "]")
【実行結果】
a.length = [11]