我有一个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/