25 Temmuz 2010 Pazar

C# 3.0 Yenilikleri - I

1-Auto Implemented Property: C# 3.0 yeniliklerinden biridir. Kendilerinin gorevi kisaca sudur ki, eger bir sinif icerisine private bir field yazilip, get ve setlerinde herhangi bir islem yapilmiyorsa, kisaca bizim prop yazip iki kere taba bastigimiz zamanki olusan yapi yazilabilir.

public int Id { get; set; }
public string Ad { get; set; }
public double Fiyat { get; set; }

2-Implicitly Typed Local Variables: Ileriki konularda cok sık kullanacagiz aslinda bu ozelligi. Kisaca ornek uzerinden aciklarsak;

int a=5;
var a=5;

arasinda hic bir fark yoktur. Ide'miz kendisi 5'in int oldugunu anlayip otomatik olarak var a'yi int ozelligine sokuyor.
Kendileri object bir tip olup, mscorlib.dll'i icinde yer alir. Birkac ufak dipnotlar;

1-var e;
var f=null; //bunlar hatali kullanimlardir.
2-Sadece Lokal degiskenlerde kullanilabilirler.
3-Linq'da ve yine c# 3.0 ile gelen anonim tiplerde kullanilirlar.

*** Var, bir tip degildir. Sadece, sag taraftan atanan uyenin tipini anlayip, kendini o tipe donusturen bir "keyword"dur.

3-Anonim Tipler:
Tasarim yapilmis siniflarin nesnelerini olusturmamizi saglayan bir C# 3.0 yeniligidir. Var anahtar sozcugu, arka tarafta olusan sinifin adini temsil etmektedir. Cunku o sinifin adini kod icinde ele alamiyoruz.!

var v=new { Marka = "Renault", Model = "Megane", Hiz = 200 };
Console.WriteLine(v.ToString());//ToString() metodu override ediliyor aslinda.


Anonim Tipler, LINQ sorgulari icinde kullanilir.Bunun idsindaki sinfilari yine bu sekilde yazmaya devam edecegiz.
4-Implicitly Type Arrays: C# 3.0 yeniliklerinden biri de implicitly type arraylerdir. Gelis amaci tamamiyle Anonim tiplerin dizilerini yapmaktir. Kullanimi oldukca basittir, asagidaki ornek yeterince aciklayici olacaktir.

var elemanlar = new[]
{
new{ X=1,Y=2},
new{ X=1,Y=2},
new{ X=1,Y=2}
};

2 yorum:

sefer_50 dedi ki...

biraz daha açıklayıcı olsanız; benim gibi bu dili yeni yeni öğrenmeye başlayanlar için daha faydalı olabilirsiniz..Misal ben
new{ X=1,Y=2},
new{ X=1,Y=2},
new{ X=1,Y=2}
bu kodları yazdığımda ve bunları Bir dizinin indisleri oalrak algılayıp consola yazdırmaya kalktığımda yazdırmıyor..Lütfen daha açıklayıcı olur musunu?

Editor dedi ki...

yukarıda yazdığım gibi anonim tiplerin dizilerini yapmak amacıyla gelmiştir. Yani tipi belli olmayan dizidir. Dolayısıyla erişmek istiyorsanız, dizilerde olduğu gibi index kullanarak erişmelisiniz. Yani,

Console.WriteLine(elemanlar[0]);