【VB.NET入門】Dictionaryとは?仕組みや使い方を徹底解説

「VB.NETの連想配列(dictionary)って、どんな時に使うんだろう……」
「VB.NETの連想配列(dictionary)の基礎的な使い方や、応用テクニックがあれば知りたいな……」
と思っていませんか?
VB.NETで配列を使ったことがあっても、連想配列(dictionary)を使ったことがないという人もいるのではないでしょうか。配列だけでも便利ですが、連想配列(dictionary)を使いこなすとよりコードが組みやすくなるので、覚えておくと便利です。
そこで今回は、VB.NETのDictionaryの使い方・仕組み・サンプルコードを解説します。
- システム
エンジニア - VB.NETの連想配列(dictionary)を詳しく知りたい!
- プロジェクト
マネージャー - VB.NETの連想配列(dictionary)は使いこなすととても便利なので、ぜひ覚えましょう!
※この記事は、Visual Basicの16.0で動作確認しました。
VB.NETの連想配列(Dictionary)って何?
まず、VB.NETの連想配列(dictionary)について解説します。連想配列(dictionary)は、以下のように「キー」と「値」をセットにして管理できる配列のことです。
1
2
3
4
|
Dim 連想配列名 As New Dictionary(Of キーの型, 値の型)()
連想配列名.Add(キー1, 値1)
連想配列名.Add(キー2, 値2)
連想配列名.Add(キー3, 値3)
|
連想配列名(キー1)のように書くと、値1の値を利用できます。このように、キーごとに値を管理できます。
ただ、使い方のイメージがよくわからない人も多いのではないでしょうか。そこで次に、具体的な使い方を解説します。
VB.NETの連想配列(Dictionary)の使い方
ここからは、VB.NETの連想配列(Dictionary)の使い方について、以下に分けて解説します。
1.宣言
2.項目の追加
3.項目の削除
4.値の取得
5.値の更新
使い方 + サンプルコードに分けて解説するので、ぜひ参考にしてみてくださいね。
1.宣言
1つ目は、「宣言」です。配列同様、連想配列を使う時も以下のように宣言が必要です。
1
|
Dim 連想配列名 As New Dictionary(Of キーの型, 値の型)()
|
1
|
Dim dicSample As New Dictionary(Of Integer, String)()
|
サンプルでは、dicSampleという名前で連想配列を用意し、キーの型を数値型(Integer)、値の型を(String)で設定しています。
使い方の基本となるので、覚えておきましょう。
2.項目の追加
2つ目が、「項目の追加」です。連想配列を宣言したら、「キー」「値」のセットを追加しましょう。
項目を追加したいときは、Addメソッドを使います。追加方法は、以下のとおりです。
1
|
連想配列名.Add(キー, 値)
|
1
2
3
4
5
6
7
8
9
10
11
12
|
Sub Main(args As String())
'連想配列の宣言
Dim dicSample As New Dictionary(Of Integer, String)()
'連想配列の値追加
dicSample.Add(1, "テスト1")
dicSample.Add(2, "テスト2")
dicSample.Add(3, "テスト3")
'連想配列の要素数をログに出力
Console.WriteLine("要素数:" & dicSample.Count)
End Sub
|
実行結果:
「dicSample.Add(キー,値)」で、項目を追加しています。このように、キーとセットで値を追加できます。
3.項目の削除
3つ目は、「項目の削除」です。追加した項目を削除したいケースは、よくあります。
項目を削除したいときは、Removeメソッドを使います。使い方は、以下のとおりです。
1
|
連想配列名.Remove(キー)
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
Sub Main(args As String())
'連想配列の宣言
Dim dicSample As New Dictionary(Of Integer, String)()
'連想配列の値追加
dicSample.Add(1, "テスト1")
dicSample.Add(2, "テスト2")
dicSample.Add(3, "テスト3")
'連想配列のキー「2」の値を削除
dicSample.Remove(2)
'連想配列の要素数をログに出力
Console.WriteLine("要素数:" & dicSample.Count)
End Sub
|
実行結果:
キーが「2」の値を削除し、ログに出力した要素数が2になっていますよね。このように、簡単に項目を削除できます。
4.値の取得
4つ目は、「値の取得」です。セットした値を使って処理を作るのは、基本です。使い方を覚えておきましょう。
使い方は以下のとおりです。
1
|
連想配列名(キー)
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
Sub Main(args As String())
'連想配列の宣言
Dim dicSample As New Dictionary(Of Integer, String)()
'連想配列の値追加
dicSample.Add(1, "テスト1")
dicSample.Add(2, "テスト2")
dicSample.Add(3, "テスト3")
'連想配列の要素数をログに出力
Console.WriteLine("キー「1」の値:" & dicSample(1))
Console.WriteLine("キー「2」の値:" & dicSample(2))
Console.WriteLine("キー「3」の値:" & dicSample(3))
End Sub
|
実行結果:
追加した値が、dicSample(要素番号)で簡単に取得できていますよね。このように、追加した値が利用しやすいのも連想配列(Dictionary)の魅力ですね。
5.値の更新
5つ目は、「値の更新」です。連想配列に追加した値のみ変更したいケースは、よくあります。
値の更新方法は、以下のとおりです。
1
|
連想配列名(キー) = 新しい値
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
Sub Main(args As String())
'連想配列の宣言
Dim dicSample As New Dictionary(Of Integer, String)()
'連想配列の値追加
dicSample.Add(1, "テスト1")
dicSample.Add(2, "テスト2")
dicSample.Add(3, "テスト3")
'キーが「1」の値を変更
dicSample(1) = "変更した値"
'連想配列の要素数をログに出力
Console.WriteLine("キー「1」の値:" & dicSample(1))
Console.WriteLine("キー「2」の値:" & dicSample(2))
Console.WriteLine("キー「3」の値:" & dicSample(3))
End Sub
|
実行結果:
キーが「1」の値が、「テスト1」から「変更した値」に変わっていますよね。このように、追加後でも値は変更できます。
VB.NETの連想配列(Dictionary)のサンプルコード
ここまで、1つずつ使い方 + サンプルコードを解説してきました。ただ、実際に使う時は、組み合わせて使うことの方が多いです。
サンプルコードをもとに、解説しますね。
1
2
3
4
5
6
7
8
9
10
11
12
|
Sub Main(args As String())
'連想配列の宣言
Dim dicUser As New Dictionary(Of String, String)()
'連想配列の値追加
dicUser.Add("name", "テストユーザー")
dicUser.Add("age", "27")
'連想配列の項目数分、ログに出力
Console.WriteLine("nameの値:" & dicUser(“name”))
Console.WriteLine("ageの値:" & dicUser(“age”))
End Sub
|
実行結果:
今回はキー、値ともに文字列型(String)で指定し、値の追加 + 値のログ出力をしています。宣言、値の追加、値の取得(出力)が基本なので、使い方を覚えておきましょう。
VB.NETの連想配列(Dictionary)を使う時によくある2つの質問
ここからは、VB.NETの連想配列(Dictionary)を使う時によくある、以下2つの質問について解説します。
1. どんな時に使うのがおすすめ?
2. セットで覚えると便利な構文はある?
1つずつ詳しく解説しますね。
1.どんな時に使うのがおすすめ?
「連想配列って確かに便利だけど、具体的にどんな時に使うの?」と思った方もいるのではないでしょうか。
おすすめは、以下のようなときです。
・同じグループとして1セットで扱いたいとき
・ただ値を入れるだけでなく値に意味を持たせたいとき
先ほど解説したサンプルでは、キーを「name」や「age」にしていました。キー名を見るだけで、名前(name)、年齢(age)であることがすぐにわかりますよね。
これがただの配列の場合は、配列名(要素番号)の指定となるので、パッと見たときに何を利用しているのかわかりづらいです。配列数が少ない場合は良いかもしれませんが、データが多くなってくると扱いにくくなるので、連想配列(Distionary)を使うほうがいいでしょう。
2.セットで覚えると便利な構文はある?
連想配列はとても便利ですが、「要素数で指定しない分、ループ処理を作るときが少し厄介」です。全てのデータを利用したいとき、キーを手打ちで入力するのは効率が悪いですよね。
そんな時に備えて、For Each文の使い方を覚えておきましょう。For Each文を使って以下のように書くと、キーの数に応じて値を全て出力できます。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
Sub Main(args As String())
'連想配列の宣言
Dim dicUser As New Dictionary(Of String, String)()
'連想配列の値追加
dicUser.Add(“name”, “テストユーザー”)
dicUser.Add(“age”, “27”)
'連想配列の項目数分、ログに出力
For Each dicTemp As KeyValuePair(Of String, String) In dicUser
Console.WriteLine(dicTemp.Key & “の値:” & dicTemp.Value)
Next
End Sub
|
実行結果:
For Each文の使い方は以下のとおりです。
1
2
3
|
For Each ループ処理内で使う変数名 As 型名 In 元となる配列の変数名
'実行する処理を書く
Next
|
ポイントは、型名にKeyValuePair(構造体)を指定している点です。Dictionaryを直接指定してもエラーとなってしまうので、注意しましょう。
ちなみにこのサンプルは、「VB.NETの連想配列(Dictionary)のサンプルコード」で解説したサンプルと、実行結果が同じです。ただ、For Each文を使った場合は、連想配列の項目数に合わせて結果を出力できます。
「配列の数分ループ処理するケース」はよくあるので、覚えておくと良いかもしれませんね。
VB.NETの配列の使い方については、以下で詳しく解説しています。基礎を振り返りたい方は、ぜひ参考にしてみてくださいね。
>>> 【VB.NET入門】配列の使い方全まとめ!基礎だけでなく応用も
まとめ
今回は、VB.NETの連想配列(Dictionary)の使い方・仕組み・サンプルコードを解説しました。
連想配列は、1つにデータをまとめて扱いたいときにとても便利です。使いどころが多いので、覚えておくと良いでしょう。
簡単なところからでいいので、ぜひ使ってみてくださいね!
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。

-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社夢真ビーネックスグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。


新着案件New Job
-
開発エンジニア/東京都品川区/【WEB面談可】/在宅ワーク
月給29万~30万円東京都品川区(大崎駅) -
遠隔テストサービス機能改修/JavaScript/東京都港区/【WEB面談可】/テレワーク
月給45万~60万円東京都港区(六本木駅) -
病院内システムの不具合対応、保守/東京都豊島区/【WEB面談可】/テレワーク
月給30万~30万円東京都豊島区(池袋駅) -
開発/JavaScript/東京都豊島区/【WEB面談可】/テレワーク
月給50万~50万円東京都豊島区(大塚駅) -
債権債務システム追加開発/東京都文京区/【WEB面談可】/在宅勤務
月給62万~67万円東京都文京区(後楽園駅) -
PMO/東京都豊島区/【WEB面談可】/在宅勤務
月給55万~55万円東京都豊島区(池袋駅)