[VBA]Dictionary(連想配列)の使い方とテクニック

VBA

VBAで作りこんでいると、Dictionary(連想配列)にお世話になることが多々あります。

Dictionary(連想配列)の仕様・使い方を理解すると、VBA処理のいろいろな局面で利用価値を見出せるため、個人的には大変重宝しているオブジェクトです。

ここではまずDictionary(連想配列)の仕様のご紹介と使いどころとしてどんな使い方ができるのかを考えていきたいと思います。

VBAのDictionary(連想配列)の使い方で悩んでいる方はぜひ参考にして頂ければ幸いです。

スポンサーリンク
スポンサーリンク

Dictionary(連想配列)とは

VBAでDictionaryといえば連想配列。そして連想配列といえば・・・?簡単な表現で言ってしまうと連想配列とはキーとデータをセットに格納できるオブジェクトを指します。

基本的にVBAの配列はデータ型を宣言した上で、インデックスで型に応じたデータを管理していますが、Dictionary(連想配列)はキーでデータで管理するオブジェクト仕様です。

なおキーは数値である必要はなく日本語をキーとして設定しても何ら問題ありません。

ただしキーで管理しているため、キーを重複させることは仕様上できません。

そのため同じキーで別の値も管理しなければならない場合は取り扱いに注意が必要です。

逆を言ってしまえば、重複のないリスト管理を得意することから「Dictionary(辞書)」という名を授けられたと言っても過言ではないでしょう。

例えば、以下のような日本語と英語の国名リストを処理で使用しようとしたとき・・・

日本語英語
日本Japan
アメリカAmerica
中国China
イギリスEngland
ドイツGermany
オーストラリアAustralia
カナダCanada

普通の文字列型の2次元配列を宣言して格納する方法もありますが、Dictionary(連想配列)を使った格納方法もあります。

Sub Sample_001()
Dim arrList(6,1) As String
Dim objDic As New Dictionary
Dim i As Integer
	
	'** データを2次元配列とDictionary(連想配列)に格納する

	'2次元配列に格納
	arrList(0,0) = "日本"
	arrList(0,1) = "Japan"
	arrList(1,0) = "アメリカ"
	arrList(1,1) = "America"
	arrList(2,0) = "中国"
	arrList(2,1) = "China"
	arrList(3,0) = "イギリス"
	arrList(3,1) = "England"
	arrList(4,0) = "ドイツ"
	arrList(4,1) = "Germany"
	arrList(5,0) = "オーストラリア"
	arrList(5,1) = "Australia"
	arrList(6,0) = "カナダ"
	arrList(6,1) = "Canada"

	'Dictionary(連想配列)に格納
	objDic("日本") = "Japan"
	objDic("アメリカ") = "America"
	objDic("中国") = "China"
	objDic("イギリス") = "England"
	objDic("ドイツ") = "Germany"
	objDic("オーストラリア") = "Australia"
	objDic("カナダ") = "Canada"
	
	'** 「ドイツ」の英語表記をデバッグ出力する ******

	'2次元配列の場合
	For i =LBound(arrList, 1) To UBound(arrList, 1)
		If arrList(i, 0) = "ドイツ" Then
			Debug.Print arrList(i, 1)
			Exit For
		End If
	Next i

	'Dictionary(連想配列)の場合
	Debug.Print objDic("ドイツ")

End Sub

Dictionary(連想配列)の具体的な使い方は別として、見比べてみるとどのように見えますか?

二次元配列でのデータの格納方法や対象国の探し出し方など、一見すると何も考えず記述してしまいがちですが、一緒に記述したDictionary(連想配列)でのやり方もご覧ください。

Dictionary(連想配列)は特定のユニークなキーを名指しで格納して、キーを名指しでデータを引き出せているのが確認できますね。

比較すると記述が簡潔な上にキーを使用しているので直感的にも作業目的を把握しやすいのはメリットと言えるのではないでしょうか。

もちろん二次元配列にも得意な分野がありますので単純な優劣は付けられませんが、プログラム作成において使用する局面を誤らなければDictionary(連想配列)はとても頼もしい存在となってくれるでしょう。

Dictionary(連想配列)のプロパティとメソッド

ではさっそくDictionary(連想配列)のプロパティとメソッドについて説明していきます。

通常の配列と違ってオブジェクト化されているため、プロパティとメソッドが定義されているのもDictionary(連想配列)の特徴と言えます。

プロパティ

プロパティ説明
CountDictionary(連想配列)に格納されたキー/データのペア数
Itemキーに紐づいたデータを設定するか取得する
Key設定済みキーを別のキー変更する
CompareModeキーの比較モード:大文字と小文字、全半角を区別したい時に指定

定数説明
vbBinaryCompare0厳密に比較したい
vbTextCompare1あいまいに比較したい

メソッド

メソッド説明
AddDictionary(連想配列)にキー/データのペアを格納する
ExistsDictionary(連想配列)内に引数のキーが存在するかTrue/Falseを返す
ItemsDictionary(連想配列)のすべてのデータを配列にして返す
KeysDictionary(連想配列)のすべてのキーを配列にして返す
Remove引数のキーをDictionary(連想配列)からペア単位で削除
RemoveAllDictionary(連想配列)から全てのペアを削除

メソッドにソート機能が含まれていないことが物足りないですが、通常の2次元配列ではサポートされていない様々なプロパティやメソッドがあることでVBA使用時の選択肢が広がります。

Dictionary(連想配列)の基本的な使い方

ここではDictionary(連想配列)の宣言から追加、削除などプロパティやメソッドの基本的な使い方を説明したいと思います。

Dictionary(連想配列)の宣言

VBAではオブジェクトの宣言の際に、アーリーバインディングとレイトバインディング、2種類のアプローチがあります。

※バインディングについては、別の記事で詳しく取り上げたいと思います。

アーリーバインディング

アーリーバインディングは事前バインディングとも呼びますが、ExcelやAccessなどのOfficeの実行ファイルを起動したときに自動的にメモリの割り当てがなされます。

分かりやすくいうと、あらかじめ参照設定にDictionary(連想配列)を含むライブラリを追加しておく必要があるということです。

Dictionary(連想配列)の参照設定:Microsoft Scripting Runtime
Dictionary(連想配列)の参照設定
この「Microsoft Scripting Runtime」はDictionary(連想配列)のほかにも便利なFileSystemObjectなども同時にバインディングされるため、なかなか重宝されるライブラリだったりします。

Sub Sample_002()
'変数宣言時にNewすることでオブジェクトを自動生成
Dim objDic As New Dictionary

End Sub

または変数の型宣言とオブジェクトの生成を分けるケースなら以下のとおり。

Sub Sample()
Dim objDic As Dictionary
	'Dictionary(連想配列)を使用するまでオブジェクト生成しない
	Set objDic = New Dictionary

End Sub

これらのどちらもアーリーバインディングとしての恩恵は得られるため、どちらのやり方が優れているとかの優劣はありません。

レイトバインディング

レイトバインディングは遅延バインディングとも呼びますが、アーリーバインディングで得られる恩恵はありませんが、参照設定が不要なため初期設定から解放されます。

Sub Sample()
Dim objDic As Object
	'CreateObjectでオブジェクトを生成
	Set objDic = CreateObject("Scripting.Dictionary")

End Sub

もし移植用のモジュールやクラスを作成したりするのであれば、設定不要なレイトバインディングの方が無用なトラブルを避けるには無難かもしれません。

またVBScriptなどを扱うことがあるようであれば、レイトバインディングもあわせて覚えておくといいかもしれません。※VBScriptは参照設定という概念がないので。

プロパティやメソッドの使った基本的なサンプル

ここでは可能な限りプロパティやメソッドを使ったサンプルを挙げてみたいと思います。

Sub Sample_002()
Dim objDic As New Dictionary
Dim arrKeys As Variant
Dim arrItems As Variant
Dim i As Integer
 
    '比較モードをテキスト比較モードであいまいに
    objDic.CompareMode = vbTextCompare
 
    'Dictionary(連想配列)にデータを格納
    objDic.Add "日本", "Japan"
    objDic.Add "アメリカ", "America"
    objDic.Add "中国", "China"
    objDic.Add "イギリス", "England"
    objDic.Add "ドイツ", "Germany"
    objDic.Add "オーストラリア", "Australia"
    objDic.Add "カナダ", "Canada"
    objDic.Add "XXXXXXXXX", "YYYYYYYYY"
      
    'Dictionary(連想配列)内に「インド」のキー確認
    If Not objDic.Exists("インド") Then
        'キーが存在しなければ追加
        objDic.Add "インド", "India"
    End If
  
    'Dictionary(連想配列)内に「日本」のキー確認
    If objDic.Exists("日本") Then
        'キーが存在していればキーを「日本」⇒「ニッポン」に変更
        objDic.Key("日本") = "ニッポン"
        'データを「Japan」から「Nippon」に変更
        objDic.Item("ニッポン") = "Nippon"
    End If
  
    'Dictionary(連想配列)内に「XXXXXXXXX」のキー確認
    If objDic.Exists("XXXXXXXXX") Then
        'キーが存在すれば削除
        objDic.Remove "XXXXXXXXX"
    End If
  
    'Dictionary(連想配列)内に「アメリカ」のキー確認
    If objDic.Exists("アメリカ") Then
        'デバッグ出力
        Debug.Print "テキスト比較モード:ヒット"
    Else
        'デバッグ出力
        Debug.Print "テキスト比較モード:ノーヒット"
    End If
 
    'Dictionary(連想配列)キーを1次元配列化
    arrKeys = objDic.Keys
     
    'Dictionary(連想配列)データを1次元配列化
    arrItems = objDic.Items
  
    'Dictionary(連想配列)内のペアをすべてデバッグ出力
    For i = LBound(arrKeys) To UBound(arrKeys)
        Debug.Print arrKeys(i) & ":" & arrItems(i)
    Next i
  
    'Dictionary(連想配列)内のペア数をデバッグ出力
    Debug.Print "Dictionary(連想配列)のペア件数:" & objDic.Count
  
    'Dictionary(連想配列)内のペアを全削除
    objDic.RemoveAll
  
    'Dictionary(連想配列)内のペア数をデバッグ出力
    Debug.Print "Dictionary(連想配列)のペア件数:" & objDic.Count
  
    Set objDic = Nothing
  
End Sub

Dictionary(連想配列)の動作検証用のサンプルになります。

もはや何がしたいのか分からないような処理ですが、Dictionary(連想配列)のプロパティとメソッドをフル活用していますので、解説を踏まえそれぞれどのような使い方となっているのか確認してみましょう。

サンプルの処理の解説

まず変数宣言ですが、ここではアーリーバインディングで宣言と同時にオブジェクト生成しています。そのほか必要な変数を少し定義しています。

その後、まず比較モードを設定しています。

比較モードはDictionary(連想配列)の格納件数が0件の時しか設定できませんので、その点に注意してください。

そしてDictionary(連想配列)にどんどんデータを追加していきます。データは先程使用したデータを活用していいます。

ExistsメソッドでDictionary(連想配列)内に「インド」のキーの存在確認し、存在しなければ「インド」のペアを追加しています。

「日本」のキーも同様にExistsメソッドで確認し、存在していればキーの別のキー「ニッポン」に変更し、キー変更後に「ニッポン」のデータも新たに更新しています。

さらに「XXXXXXXXX」キーをExistsメソッドで存在確認して、存在していればペアを名指しで削除しています。

次に半角カタカナ表記の「アメリカ」キーのExistsメソッドで存在確認し、結果を出力

ここでは処理開始時に比較モードをテキスト比較モードを設定したため、全半角、大文字・小文字をあいまいに比較するモードとなるため結果は「ヒット」となります。

バイナリ比較モードでExistsメソッドを実行するとFalseで返すことができるので、処理の用途に合わせて比較モードを選択してください。

それからキーとデータをそれぞれ別の配列に格納し、Dictionary(連想配列)内のデータをすべてデバッグ出力しています。

その後、格納件数を出力し、ペアの全削除を実行した上で、再度格納件数を出力。

最後に変数を開放した上で処理は終了となります。

処理の結果は以下のとおりです。
Dictionary(連想配列)のSample_002の結果

記述についての補足

Dictionary(連想配列)の追加の記述ですが、サンプルではAddメソッドを使用していますが、追加する記述は以下のような記述でも追加可能です。

Sub Sample()
Dim objDic As New Dictionary
	
	'記述1.Addメソッドを使用した追加方法
	objDic.Add "日本", "Japan"

	'記述2.Addメソッドを使用しない追加方法
	objDic("日本") = "Japan"	

End Sub

記述1はサンプル内で使用したAddメソッド。記述2はAddメソッドを使用しない記述となります。違いはあれど同じようにDictionary(連想配列)に追加されます。

ただし記述2の場合は新たに追加する際にすでに格納済みのキーであった場合、エラーとならずにそのキーのデータを新たに更新する挙動になる点に注意が必要です。

Sub Sample()
Dim objDic As New Dictionary
	
	'Dictionary(連想配列)にペアを追加
	objDic.Add "日本", "Japan"
	'記述1.ペアを名指しでデータ更新
	objDic.Item("日本") = "Japan-001"
	'記述2.ペアを名指しでデータ更新
	objDic("日本") = "Japan-002"

End Sub

上記の例を見てみましょう。

記述1ではItemプロパティを使ってデータを更新していますが、記述2では先程の例でAddメソッドを使用しない追加の記述方法とまったく同じ方法で更新しています。

記述2の記述方法はその時々で追加であり、更新でありの働きをこなす記述だということが分かったと思います。

これもどちらの記述に優劣があるわけではありませんが、どちらの記述でDictionary(連想配列)の処理が記述されていても理解できるように覚えておく方がいいかもしれません。

オブジェクト型も格納できる

Dictionary(連想配列)のデータにはオブジェクト型を格納することができます。

文字列や数値以外にも以下のようなものもAddメソッドでデータとして追加することができます。

  • Dictionary(連想配列)
  • コレクション
  • 多次元配列
  • 独自クラスなど

これら以外にもオブジェクトは数多くありますが、ある程度のデータ群をキーと紐づけて管理することできるというわけです。

さらに恐るべきは、キーにもオブジェクト型を設定できるという事実。

なかなか身近な使い方としてキーにオブジェクトを設定してオブジェクトでデータを索引するケースは見出せませんが、こういった設定をキーが許容できることでソート機能を簡単に定義できなかったのではないかと勘繰ってしまいます。

Sub Sample()
Dim objDic As New Dictionary
Dim var As Variant

    'キーおよびデータにWorksheetオブジェクトを設定
    For Each var In ThisWorkbook.Worksheets
        objDic.Add var, var
    Next
    
    'キーからWorksheetのNameプロパティにアクセスおよびデータ型も確認
    For Each var In objDic.Keys
        Debug.Print "キー:" & var.Name & " ::: " & TypeName(var)
    Next
    
    'データからWorksheetのNameプロパティにアクセスおよびデータ型も確認
    For Each var In objDic.Items
        Debug.Print "データ:" & var.Name & " ::: " & TypeName(var)
    Next
    
End Sub

上記サンプルでキーとデータのどちらもWorksheetオブジェクトが設定できることを確認することができます。
キーとデータにオブジェクトが設定できる
【注意点】構造体を格納することはできません。

Dictionary(連想配列)の使いどころ

Dictionaryは和訳で「辞書」というくらいなので、ユニークリスト(キーに重複のないリスト)の作成した処理に強い力を発揮します。

ユニークなキーに対して
  • 数値を合算していく
  • 件数をカウントしていく
  • データの変化を検知する
  • データの最大・最小値を取得する
  • データの初期値・最終値を取得する

そのほか面白い使い方も発想次第ですが、Dictionary(連想配列)の主な使いどころはこのような感じではないかと思います。

使いどころを組み込んだサンプル

Dictionary(連想配列)の使いどころのサンプル
上記のリストがあったとして、このリストを使用してDictionary(連想配列)の使いどころで挙げた使い方をサンプルとしてVBAの記述を起こしてみたいと思います。

Sub Sample_003()
Dim objHeader As New Dictionary
Dim objGroup As New Dictionary
Dim objCurrent As Dictionary
Dim currentGroup As Variant
Dim currentValue As Variant
Dim arrList As Variant
Dim i As Integer
    
    'ヘッダー領域の値を2次元配列化
    With ThisWorkbook.ActiveSheet
        arrList = .Range(.Cells(1, 1), .Cells(1, 3)).value
    End With

    'ヘッダー位置をDictionary(連想配列)化
    For i = LBound(arrList, 2) To UBound(arrList, 2)
        objHeader.Add arrList(1, i), i
    Next i

    '配列を初期化
    Erase arrList

    'アクティブ領域の値を2次元配列化
    With ThisWorkbook.ActiveSheet
        arrList = .Range("A1").CurrentRegion.value
    End With

    'ヘッダー位置をDictionary(連想配列)化
    For i = LBound(arrList, 1) To UBound(arrList, 1)
        
        '対象行の「グループ」列と「価格」列を取得
        currentGroup = arrList(i, objHeader("グループ"))
        currentValue = arrList(i, objHeader("価格"))
        
        '対象行がヘッダー行か否かを判定 ※ヘッダー行は対象外
        If Not objHeader.Exists(currentGroup) Then
            
            'グループキーの存在確認
            If Not objGroup.Exists(currentGroup) Then
                
                '行単位のDictionary(連想)のオブジェクトを生成
                Set objCurrent = New Dictionary
                
                '対象行の情報を追加する
                objCurrent.Add "件数", 1
                objCurrent.Add "初期値", currentValue
                objCurrent.Add "最終値", currentValue
                objCurrent.Add "最小値", currentValue
                objCurrent.Add "最大値", currentValue
                objCurrent.Add "合計値", currentValue
                
                'グループ単位のDictionary(連想)に追加する
                objGroup.Add currentGroup, objCurrent
            
            Else
                
                'グループ単位のDictionary(連想)の情報を更新する
                objGroup(currentGroup)("件数") = objGroup(currentGroup)("件数") + 1
                objGroup(currentGroup)("最終値") = currentValue
                objGroup(currentGroup)("最小値") = IIf(objGroup(currentGroup)("最小値") < currentValue, objGroup(currentGroup)("最小値"), currentValue)
                objGroup(currentGroup)("最大値") = IIf(objGroup(currentGroup)("最大値") > currentValue, objGroup(currentGroup)("最大値"), currentValue)
                objGroup(currentGroup)("合計値") = objGroup(currentGroup)("合計値") + currentValue
                
            End If
        End If
    Next i

    '配列を初期化
    Erase arrList
    
    'グループ単位のDictionary(連想配列)キーを1次元配列化
    arrList = objGroup.Keys
    
    'グループ単位のDictionary(連想配列)の情報を出力
    For i = LBound(arrList) To UBound(arrList)
    
        Debug.Print "グループ:" & arrList(i)
        Debug.Print "件数:" & objGroup(arrList(i))("件数")
        Debug.Print "初期値:" & objGroup(arrList(i))("初期値")
        Debug.Print "最終値:" & objGroup(arrList(i))("最終値")
        Debug.Print "最小値:" & objGroup(arrList(i))("最小値")
        Debug.Print "最大値:" & objGroup(arrList(i))("最大値")
        Debug.Print "合計値:" & objGroup(arrList(i))("合計値")
        
        If i < UBound(arrList) Then Debug.Print "============"
    Next
    
    'Dictionary(連想配列)のペア全削除&オブジェクト解放
    objHeader.RemoveAll: Set objHeader = Nothing
    objCurrent.RemoveAll: Set objCurrent = Nothing
    objGroup.RemoveAll: Set objGroup = Nothing
    
End Sub

この処理の補足

やっぱり目的がはっきりしているコードの方が作りやすいですね。

ここではDictionary(連想配列)の中にDictionary(連想配列)を格納する多段Dictionary(多段連想配列)とか、多次元Dictionary(多次元連想配列)とか呼ばれる方法も少し組み込みました。

またヘッダー行の列位置を格納するDictionary(連想配列)の使い方もちょっとした小技かもしれません。

コードを読み直すときにいちいち配列にインデックス番号で記述されていると、もう訳が分からん状態になるので、ヘッダー名を名指し指定で記述できる方が可読性やメンテナンスの観点からも優しいコードと言えるのではないでしょうか。

各集計値については、単純な加算や比較による値更新なので特筆する点はありません。

ちなみに処理の結果は以下のとおりです。
Dictionary(連想配列)の使いどころサンプルの出力結果

Dictionary(連想配列)の多次元配列について

すでに一部のサンプルで多次元配列については取り上げているのですが、改めてDictionary(連想配列)の多次元化について触れていきたいと思います。
Dictionary(連想配列)の多次元化-サンプルリスト
このようなリストがあったとします。これは誰でもダウンロードできるJPXの東証上場銘柄一覧の主要項目を抜粋したリストです。5000レコードもないデータです。

銘柄コードをキーに各種情報を多次元なDictionary(連想配列)で取り込んでみたいと思います。

多次元なDictionary(連想配列)でデータ取り込み

Sub Sample_008()
Dim objHeader As New Dictionary
Dim objStock As New Dictionary
Dim objCurrent As Dictionary
Dim arrHeader As Variant
Dim arrList As Variant
Dim buf As String
Dim i As Integer
Dim j As Integer
    
    'ヘッダー領域の値を2次元配列化
    With ThisWorkbook.ActiveSheet
        arrHeader = .Range("A1").CurrentRegion.Rows(1).value
    End With

    'ヘッダー位置をDictionary(連想配列)化
    For i = LBound(arrHeader, 2) To UBound(arrHeader, 2)
        objHeader.Add arrHeader(1, i), i
    Next i
    
    'ヘッダーのDictionary(連想配列)キーを1次元配列化
    arrHeader = objHeader.Keys

    'アクティブ領域の値を2次元配列化
    With ThisWorkbook.ActiveSheet
        arrList = .Range("A1").CurrentRegion.value
    End With

    'ヘッダー位置をDictionary(連想配列)化
    For i = LBound(arrList, 1) To UBound(arrList, 1)
        
        '対象行がヘッダー行か否かを判定 ※ヘッダー行は対象外
        If Not objHeader.Exists(arrList(i, objHeader.Item("コード"))) Then
                            
            '行単位のDictionary(連想)のオブジェクトを生成
            Set objCurrent = New Dictionary
            
            For j = LBound(arrHeader) To UBound(arrHeader)
                '各種データを追加
                If arrHeader(j) <> "コード" Then
                    objCurrent.Add arrHeader(j), arrList(i, objHeader.Item(arrHeader(j)))
                End If
            Next
            
            '銘柄単位のDictionary(連想)に追加する
            objStock.Add arrList(i, objHeader.Item("コード")), objCurrent
        End If
    Next i

    '配列を初期化
    Erase arrList
    
    '銘柄単位のDictionary(連想配列)キーを1次元配列化
    arrList = objStock.Keys
    
    'ヘッダーをデバッグ出力
    For i = LBound(arrHeader) To UBound(arrHeader)
        buf = buf & """" & arrHeader(i) & ""","
    Next
    Debug.Print Left(buf, Len(buf) - Len(","))
    
    '銘柄単位のDictionary(連想配列)の情報をデバッグ出力
    For i = LBound(arrList) To UBound(arrList)
        buf = """" & arrList(i) & ""","
        For j = LBound(arrHeader) To UBound(arrHeader)
            If arrHeader(j) <> "コード" Then
                buf = buf & """" & objStock.Item(arrList(i)).Item(arrHeader(j)) & ""","
            End If
        Next
        Debug.Print Left(buf, Len(buf) - Len(","))
    Next
    
    'Dictionary(連想配列)のペア全削除&オブジェクト解放
    objHeader.RemoveAll: Set objHeader = Nothing
    objCurrent.RemoveAll: Set objCurrent = Nothing
    objStock.RemoveAll: Set objStock = Nothing
    
End Sub

この処理を補足

このサンプルはDictionary(連想配列)にデータを取り込んでデバッグに出力するだけの処理になります。

すでに説明済みですが、Dictionary(連想配列)のデータにはオブジェクトを追加することができるため、行単位の情報をDictionary(連想配列)化したオブジェクトにすることで、そのオブジェクトを銘柄コード単位のデータとして格納することができるというわけです。

	Debug.Print objStock.item("1301").item("銘柄名")
	'イミディエイトウィンドウには「極洋」と出力されます。

Dictionary(連想配列)を多次元に格納していくことは出来ますが、ひたすら「.item(“〇〇”)」とつなげていくイメージになり次元の階層が深くなるのはアルゴリズム的にあまり美しいとも言えません。

データを多数ぶら下げる必要がある状況下ではまずデータベースを活用することをおススメします。データベースが使用できない場合で、情報をツリー上に管理する必要がある場合には手段のひとつとして検討の余地があります。

ただし格納するデータ量が多いとメモリに影響を与えるため、動作速度などが低下する可能性もあるため、パフォーマンスの低下を招かないように注意する必要があります。

ちなみに処理の結果は以下のとおりです。(見切れてますが全データ出力されています)
多次元Dictionary(連想配列)のサンプルの処理結果

Dictionary(連想配列)のまとめ

Dictionary(連想配列)は通常の配列と違い、オブジェクトであることからプロパティやメソッドがサポートされていて大変便利な配列です。

やっぱりキーで格納データを抽出したり、Existsメソッドでキーの存在確認ができるあたりの使い方を意識すると、本当にさまざまな状況で活躍してくれるオブジェクトです。

状況に合わせて適切に選択することでプログラムの作成・開発を優位に進めることが出来るでしょう。

仮に同じ処理を作るにしても代替案としてDictionary(連想配列)を使ったパターンなども意識的にイメージすることが出来るように理解を深めていって頂けるとスキルアップにもつながると思います。

以上、Dictionary(連想配列)の使い方やテクニックのご紹介でした。

タイトルとURLをコピーしました