[an error occurred while processing this directive] [an error occurred while processing this directive] .NET TIPS:VB.NETで配列を宣言するには? - @IT
[an error occurred while processing this directive]
【@記事種別@】
[an error occurred while processing this directive]
VB.NETで配列を宣言するには?

.NET TIPS

VB.NETで配列を宣言するには?

遠藤 孝信
2005/03/11
デジタルアドバンテージ

 VB.NET(Visual Basic .NET)で配列(一次元配列)を使用する場合、その宣言や割り当て、初期化にはいくつかの記述方法がある。本稿ではそれらについてまとめる。

配列の宣言

 まず配列の宣言には、次のように2つの記述方法がある。配列であることを示すカッコは変数名の後ろか型の後ろに記述できる。

Visual Basic
Dim arrayA() As String
Dim arrayB As String()

 ここでは文字列(String型)の配列を宣言している。このようにして宣言した配列には例えば次のようにして配列オブジェクトを作成し、その参照を代入することができる。

Visual Basic
arrayA = New String() {"いち", "に", "さん"}
Console.WriteLine(arrayA.Length) ' 出力:3

配列の宣言と初期化

 上記の例のように、配列を宣言し、初期化した配列オブジェクトを代入する場合には、それら2行のコードを次のようにして1行で記述できる。

Visual Basic
Dim arrayC() As String = New String() {"いち", "に", "さん"}

 そしてこの場合には、「New String()」部分を省略して次のように記述可能だ。

Visual Basic
Dim arrayD() As String = {"いち", "に", "さん"} ' New String()を省略

配列の宣言と割り当て

 配列は、その宣言時に配列の大きさを指定することにより、宣言と割り当てを同時に行うことができる。ただしこれは、次のように変数名の後ろにカッコを記述した場合のみである。

Visual Basic
Dim arrayE(3) As String
Console.WriteLine(arrayC.Length) ' 出力:4

 次のような記述はコンパイル・エラーとなる。

Visual Basic
Dim arrayF As String(3) ' コンパイル・エラーとなる

 この場合に注意が必要なのは、割り当てられた配列の要素数は「指定した値+1」となる点だ(上記の場合には(3)と記述しているので、配列の要素数は4となる)。

 つまりこれは配列の要素数ではなく、配列の最後の要素のインデックス番号(添え字の上限値)を指定していることになる。なおVB 6と異なり、VB.NETでは配列のインデックス番号の始まりは常に0である。

 ちなみに、この記述方法の場合には、次のように配列の大きさの指定を変数により指定可能だ。

Visual Basic
Dim num As Integer = 3
Dim arrayG(num) As String
Console.WriteLine(arrayG.Length) ' 出力:4

As Newキーワードによる配列の初期化は不可

 VB.NETでは、As Newキーワードにより変数の宣言とその初期化(インスタンス作成および代入)が可能だが、配列の場合にはAs Newキーワードは使用できない。

Visual Basic
Dim arrayH(3) As New String ' コンパイル・エラーとなる

 As Newキーワードの場合、配列を示すカッコを変数名ではなく型の後ろに記述するとコードの意味が変わってくる。例えば次の記述はコンパイル可能だが、これはDecimal型の配列を割り当てているわけではない。

Visual Basic
Dim arrayI As New Decimal(3)
Console.WriteLine(arrayI) ' 出力:3

 これは単にDecimal構造体(System名前空間)のコンストラクタを呼び出していることになる(カッコ内の「3」はコンストラクタのパラメータとなる)。VB.NETでは、配列のインスタンス化とコンストラクタの呼び出しを混同しやすいので注意してほしい。

カテゴリ:Visual Basic .NET 処理対象:データ型
使用ライブラリ:Arrayクラス(System名前空間)
使用ライブラリ:Decimal構造体(System名前空間)
[an error occurred while processing this directive]
[an error occurred while processing this directive]
[an error occurred while processing this directive]
[an error occurred while processing this directive]