c# Dictionary 自定义类型的key 如何判断是否存在

public class DicConfigKey
    {
        public string ID { get; set; }
        public string TypeID { get; set; }
    }
Dictionary<DicConfigKey, string> dic = new Dictionary<DicConfigKey, string>();
            dic.Add(new DicConfigKey { ID = "1", TypeID = "010" }, "test1");
            dic.Add(new DicConfigKey { ID = "1", TypeID = "020" }, "test2");
            dic.Add(new DicConfigKey { ID = "2", TypeID = "020" }, "test3");
            DicConfigKey key = new DicConfigKey() { ID = "2", TypeID = "020" };
            //bool flag = dic.Keys.Contains(key);
            bool flag = dic.ContainsKey(key);

如上代码,Dictionary中自定义类型的键Key,如何判断key是否存在呢,dic.Keys.Contains和dic.ContainsKey都返回false


问题已解决,重写DicConfigKey的Equals和GetHashCode方法即可,代码如下

public class DicConfigKey
    {
        public string ID { get; set; }
        public string TypeID { get; set; }

        public override bool Equals(object obj)
        {
            if (obj == this)
                return true;
            if (!(obj is DicConfigKey))
                return false;
            var dicconfikey = (DicConfigKey)obj;
            return ID == dicconfikey.ID && TypeID == dicconfikey.TypeID;
        }

        public override int GetHashCode()
        {
            return (ID + TypeID).GetHashCode();
        }
    }
阅读 5.8k
1 个回答
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进