好的,我需要一些帮助。我有一个通用字典“cashdata”。这个字典的键是对象(查询对象,我定义的类)。查询对象具有“术语”字段,它是一个字符串列表,以及一个“运算符”字段,它是一个枚举(“全部”或“任意”)。
cashdata.ContainsKey(a_query_object);
并且根据a_query_object和字典中的对象在术语和运算符方面是否相同而产生真或假。做这个的最好方式是什么?可能是HashCode?我要感谢一个例子,提前谢谢。
编辑:cashdata字典定义为
Dictionary<Query,List<string> > cashData = new Dictionary<Query,List<string>>();
答案 0 :(得分:1)
使您的对象实现IEquatable Interface以及重写Object.Equals
和GetHashCode
,如MSDN中的备注部分所述
如果您实现IEquatable,您还应该覆盖基础 Object.Equals(Object)和GetHashCode的类实现 它们的行为与IEquatable.Equals的行为一致 方法。如果你覆盖了Object.Equals(Object),你的覆盖 在调用static时也会调用实现 在类上等于(System.Object,System.Object)方法。在 另外,你应该重载op_Equality和op_Inequality 运营商。这可确保所有相等的测试返回一致 结果