08 December 2016

IComparable ve IEnumerable Arayüzleri

IComparable ve IEnumerable özel interfacelerdir. Bu interface’leri classlarımıza implemente ederek kullanıyoruz.
Bu interfaceleri kendi geliştirdiğimiz sınıflarda uygulamak, sınıflarımıza ekstra özellikler katar ve sınıfımızın .Net çatısı ve CLR ile entegrasyonunu sağlar. Bazı özel interfaceler IComparable, IComparer, IDisposable, IEnumerable, IEnumerator, IFormattable şeklinde sıralanabilir. İki bölümlük bu incelemede, sıraladığımız bu arayüzlerden IComparable ve IComparer’ın kullanımı ele alınacaktır.

Örnek IComparable:

Person.cs

namespace IComparable_Sample
 {
 class Person:IComparable
 {
 public int PersonID { get; set; }
 public string FullName { get; set; }
public Person(int id, string name)
 {
 this.PersonID = id;
 this.FullName = name;
 }
public override string ToString()
 {
 return string.Format("PersonID:{0} FullName:{1}",this.PersonID,this.FullName);
 }
public int CompareTo(object obj)
 {
 Person p = obj as Person;
 return this.FullName.CompareTo(p.FullName);
 }
 }
 }

Program.cs

namespace IComparable_Sample
 {
 class Program
 {
 static void Main(string[] args)
 {
 Person can = new Person(1, "can");
 Person cem = new Person(2, "cem");
Console.WriteLine(can.CompareTo(cem));
}
 }
 }

Örnek IEnumerable:

CalisanListesi.cs

namespace IEnumerable_sample
 {
class CalisanListesi:IEnumerable,IEnumerator
 {
 int index = -1;
List<Calisan> calisanlar = new List<Calisan>();
public void CalisanEkle(Calisan c)
 {
 calisanlar.Add(c);
 }
public IEnumerator GetEnumerator()
 {
 return (IEnumerator)this;
 }
public object Current
 {
 get { return calisanlar[index]; }
 }
public bool MoveNext()
 {
 index++;
 if (index < calisanlar.Count)
 {
 return true;
 }
 else
 {
 return false;
 }
 }
public void Reset()
 {
 index=-1;
 }
 }
 }

Calisan.cs

namespace IEnumerable_sample
 {
 class Calisan
 {
 public int CalisanId { get; set; }
 public string AdSoyad { get; set; }
 }
 }

Program.cs

namespace IEnumerable_sample
 {
 class Program
 {
 static void Main(string[] args)
 {
Calisan c1 = new Calisan();
 c1.CalisanId = 1;
 c1.AdSoyad = "ahmet can";
Calisan c2 = new Calisan();
 c2.CalisanId = 2;
 c2.AdSoyad = "mehmet altun";
CalisanListesi liste = new CalisanListesi();
 liste.CalisanEkle(c1);
 liste.CalisanEkle(c2);
foreach (Calisan item in liste)
 {
 Console.WriteLine(item.AdSoyad);
 }
 }
 }
 }