C#:使用ContainsKey,其中键是对象

时间:2013-07-22 21:33:50

标签: c# collections dictionary hashcode containskey

好的,我需要一些帮助。我有一个通用字典“cashdata”。这个字典的键是对象(查询对象,我定义的类)。查询对象具有“术语”字段,它是一个字符串列表,以及一个“运算符”字段,它是一个枚举(“全部”或“任意”)。

cashdata.ContainsKey(a_query_object);

并且根据a_query_object和字典中的对象在术语和运算符方面是否相同而产生真或假。做这个的最好方式是什么?可能是HashCode?我要感谢一个例子,提前谢谢。

编辑:cashdata字典定义为

Dictionary<Query,List<string> > cashData = new Dictionary<Query,List<string>>();

1 个答案:

答案 0 :(得分:1)

使您的对象实现IEquatable Interface以及重写Object.EqualsGetHashCode,如MSDN中的备注部分所述

  

如果您实现IEquatable,您还应该覆盖基础   Object.Equals(Object)和GetHashCode的类实现   它们的行为与IEquatable.Equals的行为一致   方法。如果你覆盖了Object.Equals(Object),你的覆盖   在调用static时也会调用实现   在类上等于(System.Object,System.Object)方法。在   另外,你应该重载op_Equality和op_Inequality   运营商。这可确保所有相等的测试返回一致   结果