Bu interfacelerin zorunlu kıldığı birer methodu implement etmek zorunda kalıyoruz bu durumda.... CompareTo , Clone ve Dispose
class Personel:IComparable,ICloneable,IDisposable
{
public string Ad { get; set; }
public string Soyad { get; set; }
public int Yas { get; set; }
public int CompareTo(object obj)
{
Personel p = (Personel)obj;
return this.Ad.CompareTo(p.Ad);
}
public object Clone()
{
return this.MemberwiseClone();
}
public void Dispose()
{
GC.SuppressFinalize(this);
}
}
sonra ICompare'in zorunlu kıldığı CompareTo sayesinde sınıfımızdan türettiğimiz objemizi Sort edebiliyoruz.
IClonable'ın zorunlu kıldığı Clone methodu sayesinde objemizin birebir clonunu alabiliyoruz..
IDisposable'ın zorunlu kıldığı Dispose sayesinde objemiz sistem tarafından, gerektiğinde dispose edilebiliyor.
sınıfımızı ve ilgili methodları kullanan örnek kod aşağıdadır.
IClonable'ın zorunlu kıldığı Clone methodu sayesinde objemizin birebir clonunu alabiliyoruz..
IDisposable'ın zorunlu kıldığı Dispose sayesinde objemiz sistem tarafından, gerektiğinde dispose edilebiliyor.
sınıfımızı ve ilgili methodları kullanan örnek kod aşağıdadır.
List<Personel> personeller = new List<Personel>();
personeller.Add(new Personel { Ad = "Yasin", Soyad = "PEKER", Yas = 19 });
personeller.Add(new Personel{Ad="Fatih", Soyad="ÜNAL", Yas=33});
personeller.Add(new Personel { Ad = "Mehmet", Soyad = "KARA", Yas = 22 });
//IComparable
personeller.Sort();
Personel p1 = new Personel();
p1.Ad = "Ali";
Personel p2 = p1;
p2.Ad = "Ahmet";
MessageBox.Show("p1: " + p1.Ad + ",p2: " + p2.Ad );
// sorun : 2side p2 oldu..!
// IClonable..
Personel p3 = new Personel();
p3.Ad = "Ali";
Personel p4 = p3.Clone() as Personel;
p4.Ad = "Ahmet";
MessageBox.Show("p3: " + p3.Ad + ",p4: " + p4.Ad);
//Personel class'ı IDisposable olmazsa using kızar... using kapanınca dispose edebilmesi gerek.
using (Personel p = new Personel())
{
p.Ad = "Ahmet";
}
Hiç yorum yok:
Yorum Gönder