Equals System.Object tarafından sunulan bir metoddur. Equals’ın standart implementasyonunu kullandığınız taktirde, value type’ınıza boxing uygulanarak System.ValueType olarak işlem görecek ve CLR karşılaştırma yapmak için Reflection kullanacaktır. Bu kıyaslama sürecinde gerçekleştirilecek dönüştürmeler ve reflection işlemleri, kıyaslama işleminin maliyetinin artmasına neden olacaktır.
Oluşturduğunuz class’a özel bir Equals implementasyonu, kıyaslamalarda bu maliyeti en aza indirgemenizi sağlayacaktır.
Aşağıdaki kod bloğu, kıyaslama maliyetini en aza indirgemek amacıyla override edilmiş bir Equals metod implementasyonunu örneklemektedir.
public
struct Personel
{
public string Ad;
public double Yas;
public override bool Equals(object item)
{
if (item is Personel) return Equals((Personel)item); else return false;
}
private bool Equals(Personel obj)
{
return Ad == obj.Ad && Yas == obj.Yas;
}
}