C# - よく使うクラス - Dictionary

クラウディア 
1. 概要
2. 追加
3. foreach で要素を取得
4. List 型へ変換

1. 概要

 詳細な、「namespace」は

System.Collections.Generic
 ですな、「List」と似たような、それでいて、構成の違うものです。  「Dictionary<TKey,TValue> クラス (System.Collections.Generic) | Microsoft Learn」には、「キーと値のコレクションを表します」と書いておりますな。  本ページは、下記のサイトを参考にさせていただきました。
Dictionary<TKey,TValue> クラス (System.Collections.Generic) | Microsoft Learn」
「C# での Dictionary を foreach で繰り返し処理する方法を紹介!」(2024年9月20日、リンク切れになりました)

2. 追加

 要素を1件追加するには、「Add」メソッドを使います。

Dictionary.Add(キー, 値);

3. foreach で要素を取得

 下の形式で、それぞれ、順に、キー、値、キーと値のペアを取得することができます。

foreach(キーの型 キー in Dictionary.Keys)
foreach(値の型   値   in Dictionary.Values)
foreach(KeyValuePair<キーの型, 値の型> 要素 in Dictionary)

using System;
using System.Collections.Generic;

public class Mine
{
    static public void Main ()
    {
		Dictionary<string, int> dic = new Dictionary<string, int>();

		dic.Add("hogehoge", 20);
		dic.Add("fugafuga", 21);
		dic.Add("piyopiyo", 22);

		foreach(string name in dic.Keys)
		{
	        Console.WriteLine(@"name = ["+ name +@"]");
		}

        Console.WriteLine("");

		foreach(int age in dic.Values)
		{
	        Console.WriteLine(@"age = ["+ age +@"]");
		}

        Console.WriteLine("");

		foreach(KeyValuePair<string, int> item in dic)
		{
	        Console.WriteLine(@"name = ["+ item.Key +@"] age = ["+ item.Value +@"]");
		}
	}
}
 てなソースを書いて、実行モジュールを作成し、実行すると下記の結果が得られます。

name = [hogehoge]
name = [fugafuga]
name = [piyopiyo]

age = [20]
age = [21]
age = [22]

name = [hogehoge] age = [20]
name = [fugafuga] age = [21]
name = [piyopiyo] age = [22]

4. List 型へ変換

 これは、参考サイトに書いてあって、なるほどな・・・と思いました。  それぞれ、順に、キー、値、キーと値のペアを「List」型へ変換することができる。  まぁ、変換というか、単なる代入だったりするわけですが。  その逆もできるわけで、それに関しては、割愛しますが。  下記のソースを書いて(途中、割愛しております、「myClass」の宣言に関しては、前ページをご参照ください)

using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using System.Xml.Serialization;
using System.Collections.Generic;

・・・ 「myClass」の宣言部分略	・・・

public class Mine
{
    static public void Main ()
    {
		Dictionary<string, int> dic = new Dictionary<string, int>();

		dic.Add("hogehoge", 20);
		dic.Add("fugafuga", 21);
		dic.Add("piyopiyo", 22);

		List<string> list01 = new List<string>(dic.Keys);

		foreach(string name in list01)
		{
	        Console.WriteLine(@"name = ["+ name +@"]");
		}

        Console.WriteLine("");

		List<int> list02 = new List<int>(dic.Values);

		foreach(int age in list02)
		{
	        Console.WriteLine(@"age = ["+ age +@"]");
		}

        Console.WriteLine("");

		List<myClass> list03 = new List<myClass>();

		foreach(KeyValuePair<string, int> item in dic)
		{
			list03.Add(new myClass{ name = item.Key, age = item.Value });
		}

		foreach(myClass item in list03)
		{
	        Console.WriteLine(@"name = ["+ item.name +@"] age = ["+ item.age +@"]");
		}
	}
}
 実行モジュールを作成し、実行すると下記の結果が得られます。

name = [hogehoge]
name = [fugafuga]
name = [piyopiyo]

age = [20]
age = [21]
age = [22]

name = [hogehoge] age = [20]
name = [fugafuga] age = [21]
name = [piyopiyo] age = [22]
AbemaTV 無料体験
ネットオークションの相場、統計、価格比較といえばオークファン