C#_Dictionary の使い方

PHP連想配列にあたるコレクションかと。
添え字は通常数値だが、連想配列では好きな名前にできる。

添え字と値をセットで操作したい時は KeyValuePair を使う。

 

ex ) Dictionary の操作。stringkey Pointvalueソースは所々省略。

    Dictionary<string, Point> hogeD = new Dictionary<string, Point>();
   
    // 追加
    hogeD.Add("a", new Point(10, 2));
    //または
    hogeD["a"] = new Point(40, 2);    //10, 2 が上書きされる
   
    // 要素取得
    foreach(KeyValuePair<string, Pointhoge in hogeD)
    //foreach(var hoge in hogeD) と var の方が書くの楽
    {
        Console.WriteLine($"{hoge.Key}\t{hoge.Value.X}\t{hoge.Value.Y}");
    }
   
    // Key のみを取得
    foreach(string key in hogeD.Keys)
    {
        Console.WriteLine($"{key}");
    }
   
    // Value のみを取得
    foreach(Point p in hogeD.Values)
    {
        Console.WriteLine($"{p}");
    }
   
    // Key を検索。 bool 値が返る。
    if(hogeD.ContainsKey("c"))
    {
        // Keyを含んでいれば true
    }
   
    // Value を検索。 bool 値が返る。
    if(hogeD.ContainsValue(Point))
    {
        // Valueを含んでいれば true
    }
   
    // Dictionary のコピー
    var fugaD =  new Dictionary<string, Point>(hogeD);
   
    // ソート
    var PiyoK = hogaD.OrderBy(k => k.Key);
    var PiyoV = hogaD.OrderBy(k => k.Value);
   
    // Dictionary から List へ変換
    var keyList = new List<int>(hogeD.Keys);
    var valueList = new List<Point>(hogeD.Value);
   
    // List から Dictionary へ変換
    List<int> keyList = ~ // 略。要素格納済みの List
    List<Point> valueList = ~
    Dictionary<string, Point> hogeD
        = keyList.Zip(valueList, (k, v) => new { k, v }).ToDictionary(a => a.k, a => a.v);
   
   
    // KeyValuePair の List を使う。使い道よく分からん
    var hogeList = new List<KeyValuePair<string, Point>>(hogeD);

 

 

こちらから。
https://qiita.com/39_isao/items/67d6029d413e90f52c5a
https://www.sejuku.net/blog/41326#Key
http://wa3.i-3-i.info/word11931.html

 

以上。