小编dar*_*624的帖子

使用IEqualityComparer和Equals/GethashCode Override有什么区别?

当我使用字典有时我必须更改默认的等于意思,以便比较键.我看到如果我在键的类上重写Equals和GetHashCode,或者我创建了一个实现IEqualityComparer的新类,我有相同的结果.那么使用IEqualityComparer和Equals/GethashCode Override有什么区别?两个例子:

class Customer
{
    public string name;
    public int age;
    public Customer(string n, int a)
    {
        this.age = a;
        this.name = n;
    }
    public override bool Equals(object obj)
    {
        Customer c = (Customer)obj;
        return this.name == c.name && this.age == c.age;
    }
    public override int GetHashCode()
    {
        return (this.name + ";" + this.age).GetHashCode();
    }
}
  class Program
{
    static void Main(string[] args)
    {
        Customer c1 = new Customer("MArk", 21);
        Customer c2 = new Customer("MArk", 21);
        Dictionary<Customer, string> d = …
Run Code Online (Sandbox Code Playgroud)

c# equality equals iequalitycomparer gethashcode

19
推荐指数
1
解决办法
1万
查看次数

标签 统计

c# ×1

equality ×1

equals ×1

gethashcode ×1

iequalitycomparer ×1