Derinlemesine yazılım eğitimleri için kanalımı takip edebilirsiniz...

C#’ta IEquatable Interface’i İle Nesne Karşılaştırma

Merhaba,

Elimizde T tipinden bir Entity bulunsun ve bu entityden birer koleksiyon ve nesne olduğunu varsayalım. Ben genellikle elimdeki nesnenin, koleksiyonun Contains metodu aracılığıyla varlığı ya da yokluğu hakkında net bilgi alamadım. İşte böyle bir durumda IEquatable Interface’i ile karşılaştım.

IEquatable Interface’i, mirası sınıfa Equals metodunu uygulatan ve bu metod aracılığıyla nesne karşılaştırmamızı yaptıran bir yapıdır.

Örnek olarak aşağıdaki yapıyı Entityi ele alalım.

    class Nesne
    {
        public int A { get; set; }
        public string B { get; set; }
        public bool C { get; set; }
    }

Şimdi bu sınıfımıza IEquatable Interface’ini uygulayalım.

    class Nesne: IEquatable<Nesne>
    {
        public int A { get; set; }
        public string B { get; set; }
        public bool C { get; set; }

        public bool Equals(Nesne other)
        {
            return
                this.A == other.A &&
                this.B == other.B &&
                this.C == other.C;
        }
    }

Yukarıdaki kod bloğunu incelerseniz eğer “Nesne” tipimizde Equals metodu sayesinde verisel bir karşılaştırma gerçekleştirebiliyoruz.

    class Program
    {
        static void Main(string[] args)
        {
            Nesne nesne1 = new Nesne { A = 1, B = "1", C = true };
            Nesne nesne2 = new Nesne { A = 1, B = "1", C = true };
            Console.WriteLine(nesne1.Equals(nesne2));
            Console.Read();
        }
    }
C#'ta IEquatable Interface'i İle Nesne Karşılaştırma

C#’ta IEquatable Interface’i İle Nesne Karşılaştırma

Gördüğünüz gibi nesneleri property değerlerine göre karşılaştırmaktadır.

    class Program
    {
        static void Main(string[] args)
        {
            Nesne nesne1 = new Nesne { A = 1, B = "1", C = true };
            Nesne nesne2 = new Nesne { A = 2, B = "2", C = false };
            Console.WriteLine(nesne1.Equals(nesne2));
            Console.Read();
        }
    }
C#'ta IEquatable Interface'i İle Nesne Karşılaştırma

C#’ta IEquatable Interface’i İle Nesne Karşılaştırma

Peki Nesne Tipinden Bir Koleksiyonda Karşılaştırmayı Nasıl Yapacağız? diye sorarsanız eğer aşağıdaki kod bloğunu inceleyiniz.

    class Program
    {
        static void Main(string[] args)
        {
            List<Nesne> Nesneler = new List<Nesne> {
                 new Nesne { A = 1, B = "1", C = true },
                 new Nesne { A = 2, B = "2", C = false },
                 new Nesne { A = 3, B = "3", C = true },
                 new Nesne { A = 4, B = "4", C = false },
                 new Nesne { A = 5, B = "5", C = true },
                 new Nesne { A = 6, B = "6", C = false }
            };
            Nesne nesne = new Nesne { A = 4, B = "4", C = false };
            var _Nesne = Nesneler.FirstOrDefault(n => n.Equals(nesne));
            Console.WriteLine(_Nesne.A + " " + _Nesne.B + " " + _Nesne.C);
            Console.Read();
        }
    }
C#'ta IEquatable Interface'i İle Nesne Karşılaştırma

C#’ta IEquatable Interface’i İle Nesne Karşılaştırma

Gördüğünüz gibi IEquatable Interface’i bu şekilde bir kullanım kolaylığı sağlamaktadır. Eee aklınızun köşesinde bulunsun, lazım olursa bi el atarsınız… 🙂

Sonraki yazılarımda görüşmek üzere…
İyi çalışmalar…

Bunlar da hoşunuza gidebilir...

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir