26 Temmuz 2016 Salı

IEquatable Arayüzü

Giriş
IEquatable şöyle tanımlıdır.
IEquatable<T>
IEquatable arayüzü IEqualityComparer arayüzünden farklıdır. IEquatable nesnemizi kendi tipinden bir başka nesne ile karşılaştırır. IEqualityComparer ise iki nesneyi birbiriyle karşılaştırır.

IEquatable arayüzünü gerçekleştirmek istersek şöyle yaparız.
Class MyModel : IEquatable<MyModel>
{
 
  public bool Equals(MyModel other)
  {
    //your code to compare for equity here
  }
}
Equals metodu
İmzası şöyledir.
public bool Equals(T other)
Bu metodu yazınca Object nesnesinden gelen Equals ve GetHashCode metodunu da kodlamak gerekir. Şöyle yaparız.
// Override of Object.Equals
// Calls the IEquatable.Equals version if possible.
public override bool Equals( object obj )
{
  return (obj is MyModel) && this.Equals(obj as MyModel);}

public override int GetHashCode()
{ 
  return (this.someInt * 17) ^ this.someDecimal.GetHashCode();
}




Hiç yorum yok:

Yorum Gönder