c# - C#Dictionary.ContainsKey()始终返回false

标签 c# .net .net-4.0 dictionary

我有一个Dictionary,每次调用ContainsKey方法时,它都会返回false。请看下面的例子

 Boolean found = dict.ContainsKey(new Group("group1", "test"));


尽管Visual Studio调试器显示dict中存在名称为“ group1”且类型为“ test”的Group,但找到的变量为false。到底是怎么回事?

我的Group类有两个String字段(类型和名称),我重写了Equals方法

public override bool Equals(object obj)
{
    Group otherGroup = (Group)obj;
    return this.name == otherGroup.name && this.type == otherGroup.type;
}

最佳答案

您应该覆盖GetHashCode method

包含2个字符串属性的类的HashMethod示例

public override int GetHashCode()
{
    unchecked
    {
        return ((name != null ? name.GetHashCode() : 0)*397) ^ (type != null ? type.GetHashCode() : 0);
    }
}

关于c# - C#Dictionary.ContainsKey()始终返回false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7476356/

相关文章:

c# - 直接使用 Windows Azure Active Directory 进行身份验证,无需打开 Web 浏览器

c# - 如何使用 WMI 确定连接了哪些打印机

c# - Windows 窗体应用程序中不同线程中的 GUI 和逻辑分离

.net - .NET生成WORD文档的有效方法-服务器端

c# - 在 C# 中覆盖 ToString 和使用隐式/显式转换运算符有什么区别?

c# - 使用 IEqualityComparer 查找记录

c# - 如何改变录制声音的音调?

c# - 实现 ICloneable 的正确方法

c++ - 在 64 位 Windows 上将字符串从 C++ 返回到 C# 时如何防止 AccessViolationException?

.net-4.0 - ASP.Net 对虚拟目录使用错误的 web.config