.NET TIPS

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

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

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

配列の宣言

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

Dim arrayA() As String
Dim arrayB As String()

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

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

配列の宣言と初期化

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

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

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

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

配列の宣言と割り当て

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

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

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

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

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

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

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

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

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

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

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

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

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

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

カテゴリ:Visual Basic .NET 処理対象:データ型
使用ライブラリ:Arrayクラス(System名前空間)
使用ライブラリ:Decimal構造体(System名前空間)
 
この記事と関連性の高い別の.NET TIPS
C#で配列を宣言するには?
配列のサイズを変更するには?
配列のサイズを変更するには?(Resize編)
自作クラスによる配列をソート(並べ替え)するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」

TechTargetジャパン

Insider.NET フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH