2

好的,所以我需要一些帮助。我有一个通用字典“cashdata”。这个字典的键是对象(查询对象,我定义的一个类)。查询对象具有“Terms”字段,它是一个字符串列表,以及一个“Operator”字段,它是一个枚举(“All”或“Any”)。

cashdata.ContainsKey(a_query_object);

并根据 a_query_object 和字典中的对象在术语和运算符方面是否相同而产生真或假。做这个的最好方式是什么?一个哈希码可能吗?我会很感激一个例子,在此先感谢。

编辑: cashdata 字典是这样定义的

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

1 回答 1

1

使您的对象实现IEquatable 接口以及覆盖Object.EqualsGetHashCode如 MSDN 中的备注部分所述

如果您实现 IEquatable,您还应该重写 Object.Equals(Object) 和 GetHashCode 的基类实现,以便它们的行为与 IEquatable.Equals 方法的行为一致。如果您确实重写了 Object.Equals(Object),那么在调用类上的静态 Equals(System.Object, System.Object) 方法时也会调用您重写的实现。此外,您应该重载 op_Equality 和 op_Inequality 运算符。这可确保所有相等性测试返回一致的结果。

于 2013-07-22T22:36:04.250 回答