- 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]
|