enum を key にした Dictionary は便利ですが、enum が内部的にはクラスな都合上不都合が生じます
そのため
dictionary[(int)Hoge.A]
のようにわざわざ key を int にして、enum から int にキャストしてアクセスして利用しなければいけません
そのため、Dictionary をベースに EnumDictionary を作成しました
Generic なので、boxing せずに値を取得する方法は GetHashCode
しかないため
int キャストと比べると遅いですが、こちらを利用しています
個人的によく使うであろうメソッドは定義しましたが、足りない部分は各自で実装してもらえれば
コード
public class EnumDictionary<TKey, TValue> : Dictionary<int, TValue> where TKey : Enum { public void Add(TKey key, TValue value) { base.Add(key.GetHashCode(), value); } public bool ContainsKey(TKey key) { return base.ContainsKey(key.GetHashCode()); } public bool Remove(TKey key) { return base.Remove(key.GetHashCode()); } public bool TryGetValue(TKey key, out TValue value) { return base.TryGetValue(key.GetHashCode(), out value); } public TValue this[TKey key] { get => base[key.GetHashCode()]; set => base[key.GetHashCode()] = value; } }