Ha value type-ot írsz, és azon gyors, boxolás nélküli egyenlőségvizsgálatot akarsz csinálni, akkor implementáld ezt az interfészt.
Másképp az object.Equals fut le, ami miatt boxolni kell. Hasonló a helyzet az IComparable
Érdemes megnézni debuggerben, mikor-mi fut le, ha implementáljuk az interfészt, és ha kikommentezzük az implementációt:
using System;
using System.Collections.Generic;
internal struct MyStruct : IEquatable
{
public MyStruct(int a)
{
this.a = a;
}
private readonly int a;
public override bool Equals(object obj)
{
return base.Equals(obj);
}
public override int GetHashCode()
{
return base.GetHashCode();
}
#region IEquatable
public bool Equals(MyStruct other)
{
return other.a == a;
}
#endregion
}
class Program
{
static void Main()
{
List
l.Contains(new MyStruct(22));
}
}
Could you hire me? Contact me if you like what I’ve done in this article and think I can create value for your company with my skills.