Dictionary.ContainsKey返回False,但要真 [英] Dictionary.ContainsKey return False, but a want True
本文介绍了Dictionary.ContainsKey返回False,但要真的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
namespace Dic
{
public class Key
{
string name;
public Key(string n) { name = n; }
}
class Program
{
static string Test()
{
Key a = new Key("A");
Key b = new Key("A");
System.Collections.Generic.Dictionary<Key, int> d = new System.Collections.Generic.Dictionary<Key, int>();
d.Add(a, 1);
return d.ContainsKey(b).ToString();
}
static void Main(string[] args)
{
System.Console.WriteLine(Test());
}
}
}
我应该改变,以获得正确的?
What should I change to get true?
推荐答案
您想要真正的 - 但A和B是不同的对象
You want true - but a and b are different objects.
您需要重写GetHash code和等于阶级键
You need to override GetHashCode and Equals on class Key
public class Key
{
string name;
public Key(string n) { name = n; }
public override int GetHashCode()
{
if (name == null) return 0;
return name.GetHashCode();
}
public override bool Equals(object obj)
{
Key other = obj as key;
return other != null && other.name == this.name;
}
}
这篇关于Dictionary.ContainsKey返回False,但要真的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文