| Yazar GİRİŞİ |
automatic propertyDun C# 3.0 ile yeni gelen ozelliklerden extensions methodunu anlatmaya calismistim. Bugun ise gene C# 3.0 ile gelen baska bir ozellik olan automatic propertyleri anlatmaya calisacagim. C# ile bir sinif yazarken eminim bircok kere asagidaki gibi kod parcasina denk gelmisinizdir :
public class Adress{
private string Sokak_;
private int No_;
private string Ilce_;
private string Sehir_;
private string EPosta_;
private string Telefon_;
}
Daha sonrada bu private uye degiskenleri property kullanarak get set etmissinizdir soyle ki :
public class Adress{
private string Sokak_;
public string Sokak
{
get { return Sokak_;}
set { Sokak_ = value;}
}
private string EPosta_;
public striing EPosta
{
get { return EPosta_;}
set { EPosta_ = value;}
}
...
Bu sayede sinifimizi herkese dagittiktan sonra, eger sinifta bir iyilestirme istersek uye degiskenleri ile rahatlikla oynayabiliriz ve sinifimizi kullanan diger programlarda degisikligi hissetmeden (teoride :) ) kullanabilir. Mesela sinifimizi kullanan programcilardan biri gelipte, bu sinif epostayi dogrulasin, ben atadigimda deger eger eposta duzgun ise kopyalasin degilse bir hata yazsin derse ne yapabiliriz ?
Hemen sinifimizin kodunu acip, eposta degiskenin ic degiskene atandigi bolume gelip soyle bisiler karalayabiliriz :
public class Adress{
private string EPosta_;
public string EPosta
{
get { return EPosta_;}
set {
Regex regex = new RegEx(@"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$");
if regex.IsMatch(value)
EPosta_ = value;
else
EPosta_ = String.Empty;
}
.....
Bu sayede eposta dogrulamasini yaptik, sinifimizi derledik, dll dosyamizi dagittik, eskiler sorun cikartmadi cunku zaten kimse internal degisikligi gormedi, ustelik yeni dll i kullanan programcilar patch i almis oldu. Gayet guzel, fakat bunu surekli yapmiyoruz ama buna ragmen propertyleri epey kullaniyoruz di mi? Bol bol satir yaziyoruz bir degisken tanimlamam icin, bunu kisaltmak icin C# 3.0 ile automatic property denilen yeni bir ozellik geldi, sakin nneee buraya kadar daha konuya girmedin mi demeyin :) yazilarimdan hep sifir puan almis biri olarak duzeltmeye calisiyorum yazilarimi :P.
Peki nedir bu automatic property, yukaridaki kod parcasinda nasil bize yardimci olur ? Hemen her zamanki gibi kodla cevap vermeye calisalim.
public class Adress{
public string Sokak {get;set;}
public int No {get; set;}
public string Ilce{get; set;}
public string EPosta{get;set;}
public string Telefon{get;set;}
}
Iste bu kadar :), yani yaptigimiz sey, private olarak tanimlanan degiskenleri kaldirip direk get set ile propertyleri yazmak. Kodu kullanan istemci tarafinda ise bir degisiklik yok aynen asagidaki gibi kullanabilirler :
Adress yeniAdress = new Adress();
yeniAdres.Sokak = "Ataturk Caddesi";
yeniAdres.No = 18;
Eger derlenmis clr koduna bakarsaniz, compiler aslinda sizin daha once yazdiginiz private int Sokak_ gibi seyleri yazip derlenmis kodun icine koyuyor, bu sayede sizin ayrica yazmaniza gerek kalmiyor. Bu kodu yazip dagittik bu sefer, ve gene ayni programcidan ayni sikayet geldi,"Hey ne guzel epostayi kontrol ediyordu sinif, simdi yenisi etmiyor duzelt sunu ". Tabii duzeltmek cok kolay, daha once yazdigimiz Eposta get set methodunu aynen yazip derleyin.
Bu arada bu ozellik sayesinde sinifimizi kullananlarda daha temiz kod yazabilirler, mesela asagidaki kod parcasi bu ozelligi kullanmaktadir, ne kadar anlasilir kod olduguna siz karar verin :
Adress yeniAdress = new Adress(Sokak="Ataturk Caddesi", No=18, Sehir="Samsun", Eposta=ataturk@tc.gov.tr...
Umarim automatic propertyleri biraz olsun anlatabilmisimdir.
Mutlu, huzurlu .NET kodlamalar dilerim
Volkan Uzun
http://www.msnetprogrammer.net/blog
| Volkan Uzun 14.12.2007 | |
| Rating : 10 üzerinden 6.83 |
| |
Yorum ekle