はじめに
今回はList<T>をDictionary<TKey,TValue>に変換することについての記事になります!
変換するにはLINQ
を使うので、もし「LINQってなんだっけ?」という方はこちらを見てみてから続きをみるとスムーズに理解が進むと思います。
変換方法
using UnityEngine; using System.Collections.Generic; using System.Linq; public class Enemy { public string Name { get; set; } public int Hp { get; set; } public int Exp { get; set; } } public class Hoge: MonoBehaviour { private void Start() { var enemyList = new List<Enemy> { { new Enemy{ Name = "スライム", Hp = 5, Exp = 10 } }, { new Enemy{ Name = "ももんじゃ", Hp = 10, Exp = 20 } }, { new Enemy{ Name = "ドラキー", Hp = 20, Exp = 30 } }, { new Enemy{ Name = "メタルスライム", Hp = 3, Exp = 100 } }, }; var enemyDict = enemyList.ToDictionary(enemy => enemy.Name); foreach(var item in enemyDict) { Debug.Log(item.Key + ": " + item.Value.Exp); //スライム: 10 ・・・ メタルスライム: 100 } } }
これはList<Enemy>をDictionary<string,Enemy>に変換しています。
リストからディクショナリに変換するにはToDictionayメソッド
を用いることで可能です。
また第一引数のラムダ式
で何をキーにするかを決めることができます。
さいごに
ディクショナリはキーを指定して高速にアクセスすることが可能になります。
是非用途に応じて使ってみてください!