【VB.NET入門】配列の使い方まとめ!基礎から応用まで徹底解説
「VB.NETの配列って、どんな時に使うんだろう……」
「VB.NETの配列の基礎的な使い方や、応用テクニックがあれば知りたいな……」
と思っていませんか?
VB.NETに限らず、配列はプログラミング言語ではよく使います。処理がスッキリするだけでなく、コーディングもしやすくなるので、使い方を覚えておくと便利です。
そこで今回は、VB.NETの基礎的な配列の使い方・応用テクニックについて解説します。
- システム
エンジニア - VB.NETの配列を詳しく知りたい!
- プロジェクト
マネージャー - VB.NETの配列は考え方がシンプルなので、1つずつ覚えていきましょう!
※この記事は、Visual Basicの16.0で動作確認しました。
VB.NETの配列って何?仕組みを解説!
「VB.NETの配列って何?」と思っている人が多いのではないでしょうか。配列とは、データをひとまとまりにして扱うための仕組みです。
変数は、以下のように1つの値しか入れることができません。
1
2
3
4
5
6
|
Dim num1 As Integer
Dim num2 As Integer
Dim num3 As Integer
num1 = 10
num2 = 20
num3 = 30
|
3つの変数を用意し、それぞれに値を入れています。配列を使うことで、以下のようにスッキリとまとめることができます。
1
2
3
4
|
Dim arrNum(2) As String
arrNum(0) = 10
arrNum(1) = 20
arrNum(2) = 30
|
Dimで宣言する数が減り、コードがスッキリしましたよね。複数のデータを一括で管理して利用したいときにおすすめな方法なので、覚えておくと良いでしょう。
ただ、配列はさまざまな使い方があるので、初心者の方にとっては戸惑ってしまいがちです。そこで次に、使い方 + サンプルコードをそれぞれ解説します。
VB.NETの配列の基礎的な使い方・サンプルコード
次に、VB.NETの配列の基礎的な使い方について、以下に分けて解説します。
1.宣言・要素数の指定・初期化
2.要素数の変更
3.値の取得
4.値の更新
5.要素数の取得
6.ソート
すぐに使えるよう「書き方」 + 「サンプルコード」の流れで解説するので、ぜひ参考にしてみてくださいね。
1.宣言・要素数の指定・初期化
まず、「配列の宣言・要素数の指定・初期化方法」を解説します。
配列を宣言する際は、指定なし、要素数を指定する方法、初期化をセットで行う方法の、3つの書き方があります。
1
2
3
4
5
6
7
8
|
'配列の宣言のみ
Dim 配列変数名() As 型名
'配列の宣言 + 要素数の指定
Dim 配列変数名(要素数) As 型名
'配列の宣言 + 初期化の設定
Dim 配列変数名() As 型名 = {値1 , 値2 , . . . , 値n }
|
要素数や入力する値が決まっている場合は、指定してから宣言すると良いでしょう。ただ、事前に要素数が決まっていないこともあるのではないでしょうか。
配列の宣言をした後に要素数・値を指定する方法もあるので、決まってない場合は宣言のみしておくと良いでしょう。
2.要素数の変更
次に、「要素数の変更」について解説します。配列の要素数を変更する方法は、以下のとおりです。
1
2
|
Dim 配列変数名() As 型名 = {値1,値2}
ReDim 配列変数名(変更する要素数)
|
上記の場合は配列宣言時に値1、値2を初期値としてセットしています。そのため、要素数は1(値は2つ)です。
ReDimを使えば、宣言時に設定した要素数を変更できるのです。ちなみに、以下のようにPreserveをReDimの後に追加すると、配列の元データを維持しながら、要素数だけ変更できます。
1
2
|
Dim 配列変数名() As 型名 = {値1,値2}
ReDim Preserve 配列変数名(変更する要素数)
|
Preserveがないと宣言時に設定した値1、値2の値がなくなってしまうので、値を保持しつつ要素数を追加したい場合はPreserveを使いましょう。
サンプルコードは以下のとおりです。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
Sub Main(args As String())
'配列の宣言 + 初期値セット
Dim arrNum() As Integer = {1, 2, 3}
'配列の要素番号0の値を出力
Console.WriteLine("変更前の要素番号0の値:" & arrNum(0))
'配列の要素数変更
ReDim arrNum(3)
'配列の要素番号0の値を出力
Console.WriteLine("変更後の要素番号0の値:" & arrNum(0))
End Sub
|
実行結果:
配列の宣言 + 初期値セットの直後は、要素番号0の値が正しく表示されています。ただ、ReDimで要素数を変更した後は、値が0になってしまっていますよね。
Preserveを使えば、以下のように値を保持したまま要素数を増やせます。
サンプルコード
1
2
3
4
5
6
7
8
9
10
11
12
13
|
Sub Main(args As String())
'配列の宣言 + 初期値セット
Dim arrNum() As Integer = {1, 2, 3}
'配列の要素番号0の値を出力
Console.WriteLine("変更前の要素番号0の値:" & arrNum(0))
'配列の要素数変更
ReDim Preserve arrNum(3)
'配列の要素番号0の値を出力
Console.WriteLine("変更後の要素番号0の値:" & arrNum(0))
End Sub
|
実行結果:
値を残しつつ更新したいときはPreserveを使い、全てリセットしつつ要素数を追加したいときはReDimのみを使いましょう。
3.値の取得
次に、「値の取得」について解説します。値の取得方法は、以下のとおりです。
1
|
配列変数名(要素数)
|
追加時は「配列変数名(要素)」をイコール(=)でつないで右辺に値を入れていました。取得時は、「配列変数名(要素)」として利用するだけで使えます。
サンプルコードは以下のとおりです。
1
2
3
4
5
6
7
8
9
|
Sub Main(args As String())
'配列の宣言 + 初期値セット
Dim arrNum() As Integer = {10, 20, 30}
'配列の要素番号0の値を出力
Console.WriteLine("変更前の要素番号0の値:" & arrNum(0))
Console.WriteLine("変更前の要素番号1の値:" & arrNum(1))
Console.WriteLine("変更前の要素番号2の値:" & arrNum(2))
End Sub
|
実行結果:
取得方法は簡単ですが、要素番号が0から始まることに注意しましょう。
4.値の追加・更新
次に、「要素の追加」について解説します。配列に値を入力する方法は、以下のとおりです。
1
2
3
4
5
6
7
|
Dim 配列変数名() As 型名
配列変数名(0) = 値1
配列変数名(1) = 値2
.
.
.
配列変数名(n-1) = 値n
|
要素数が、0から始まることに注意しましょう。イコール(=)の右辺に値を入れるだけなので、覚えやすいですね。
サンプルコードは以下のとおりです。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
Sub Main(args As String())
'配列の宣言 + 初期値セット
Dim arrNum() As Integer = {10, 20, 30}
'配列の要素番号0の値を出力
Console.WriteLine("変更前の要素番号0の値:" & arrNum(0))
Console.WriteLine("変更前の要素番号1の値:" & arrNum(1))
Console.WriteLine("変更前の要素番号2の値:" & arrNum(2))
'配列の値を変更
arrNum(0) = 1
arrNum(1) = 2
arrNum(2) = 3
'配列の要素番号0の値を出力
Console.WriteLine("ーーーーーーーーーーーーーーー")
Console.WriteLine("変更後の要素番号0の値:" & arrNum(0))
Console.WriteLine("変更後の要素番号1の値:" & arrNum(1))
Console.WriteLine("変更後の要素番号2の値:" & arrNum(2))
End Sub
|
実行結果:
配列の値が、それぞれ変わっていますよね。このように、簡単に値を変更できます。
5.要素数の取得
次に、「要素数の取得」について解説します。配列は「配列の要素数分、ループ処理するケース」がとても多いです。
その時に要素数の取得をよく使うので、使い方を覚えておきましょう。使い方は、以下のとおりです。
1
|
配列変数名.Length
|
サンプルコードは以下のとおりです。
1
2
3
4
5
6
7
|
Sub Main(args As String())
'配列の宣言 + 初期値セット
Dim arrNum() As Integer = {10, 20, 30}
'配列の要素数を出力
Console.WriteLine("要素数:" & arrNum.Length)
End Sub
|
実行結果:
要素数はループ処理などで使うケースも多いので、覚えておくと良いでしょう。
6.ソート
次に、「ソート」について解説します。配列は値をセットした後、ソートして順序を整理することがよくあります。
配列のソート方法は、以下のとおりです。
1
2
3
4
5
|
'昇順にソート
Array.Sort(配列変数名)
'降順にソート
Array.Reverse(配列変数名)
|
サンプルコードは以下のとおりです。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
Sub Main(args As String())
'配列の宣言 + 初期値セット
Dim arrNum() As Integer = {20, 10, 30}
'配列の値を出力
Console.WriteLine("【ソート前】要素番号1の値:" & arrNum(0))
Console.WriteLine("【ソート前】要素番号2の値:" & arrNum(1))
Console.WriteLine("【ソート前】要素番号3の値:" & arrNum(2))
'配列の順番を昇順でソート
Array.Sort(arrNum)
'配列の値を出力
Console.WriteLine("ーーーーーーーーーーーーーーーーーーーーー")
Console.WriteLine("【昇順】要素番号1の値:" & arrNum(0))
Console.WriteLine("【昇順】要素番号2の値:" & arrNum(1))
Console.WriteLine("【昇順】要素番号3の値:" & arrNum(2))
'配列の順番を降順でソート
Array.Reverse(arrNum)
'配列の値を出力
Console.WriteLine("ーーーーーーーーーーーーーーーーーーーーー")
Console.WriteLine("【降順】要素番号1の値:" & arrNum(0))
Console.WriteLine("【降順】要素番号2の値:" & arrNum(1))
Console.WriteLine("【降順】要素番号3の値:" & arrNum(2))
End Sub
|
実行結果:
昇順、降順ともに、正しくソートされていますよね。このように、簡単にソートできます。
VB.NETの配列を使う時にセットで知っておくと便利な2つの方法
ここからは、「VB.NETの配列を使うときにセットで知っておくと便利な方法」について、2つに分けて解説します。
1. 二次元配列
2. データ検索
応用的な話に入ってくるので、まずは言葉の意味と何ができるか憶えておきましょう。
1. 二次元配列
1つ目は、「二次元配列」です。普通の配列との違いは、管理できるデータの量です。
以下のように2つの次元を要素に指定できるため、セットできる値の量が変わります。
1
|
Dim nums(要素数1, 要素数2) As 型名
|
たとえば要素数1に2をセットし、要素数2に3をセットした場合は12個分値をセットできます。
と言ってもわからない方が多いともうので、サンプルコードを解説しますね。サンプルコードは以下のとおりです。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
Sub Main(args As String())
' 二次元配列変数の宣言
Dim nums(2, 3) As Integer
'値の追加方法
nums(0, 0) = 1
nums(0, 1) = 2
nums(0, 2) = 3
nums(0, 3) = 4
nums(1, 0) = 11
nums(1, 1) = 12
nums(1, 2) = 13
nums(1, 3) = 14
nums(2, 0) = 21
nums(2, 1) = 22
nums(2, 2) = 23
nums(2, 3) = 24
'値の出力
Dim i As Integer
Dim j As Integer
For i = 0 To 2
For j = 0 To 3
Console.WriteLine("nums(" & i & "," & j & "):" & nums(i, j))
Next
Next
End Sub
|
実行結果:
1 ~ 24までの値が、合計12個分出力されていますよね。このように、複数次元で値を保持して利用できます。
2. データ検索
2つ目は、「データ検索」です。「配列の中にあるデータから値を検索し、データの要素を知りたい」というケースはよくあるので、使い方を覚えておきましょう。
1
|
Array.IndexOf(配列名, 検索キーワード)
|
配列名と検索キーワードを入れるだけなので、使い方がとてもシンプルですね。サンプルコードは、以下のとおりです。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
Sub Main(args As String())
'配列を宣言し、値をセット
Dim aryUser(2) As String
aryUser(0) = "ユーザ1"
aryUser(1) = "ユーザ2"
aryUser(2) = "ユーザ3"
'調べたいキーワードに値をセット
Dim keyword As String
keyword = "ユーザ2"
'キーワードがヒットする要素番号をログに出力
Console.WriteLine("キーワードがヒットする要素番号:" & Array.IndexOf(aryUser, keyword))
End Sub
|
実行結果:
「配列のデータの中から要素を検索して、処理に応用できる」と、まずは覚えておくと良いでしょう。
まとめ
今回は、VB.NETの配列の基礎的な使い方 + 応用テクニックについて解説しました。
配列は、処理を作るための必須知識です。簡単なところからでいいので使い方を覚えて、実際に使ってみることがおすすめです。
ぜひ、VB.NETで配列を使ってみてくださいね!
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。
-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。
VB.NET新着案件New Job
-
生産管理システムの単体テスト/東京都千代田区/【WEB面談可】/在宅勤務
月給25万~25万円東京都千代田区(東京駅) -
鉄鋼関連・グループ会社システム支援/Oracle/東京都新宿区/【WEB面談可】/在宅勤務
月給26万~26万円東京都新宿区(新宿駅) -
資産運用会社向け残高管理システム運用保守/SQLServer/東京都中央区/【WEB面談可】
月給50万~60万円東京都中央区(銀座駅) -
資産運用会社向け残高管理システム開発のテスター/SQLServer/東京都中央区/【WEB面談可】
月給25万~35万円東京都中央区(銀座駅) -
Web受注システム運用保守/VB.NET/東京都港区/【WEB面談可】
月給50万~60万円東京都港区(品川駅) -
Web受注システム開発のテスター/VB.NET/東京都港区/【WEB面談可】
月給25万~35万円東京都港区(品川駅)