C# 3.0'ı hazmedemeden C# 4.0 'ın duyruluyor olması eminim bir çoğunuzun canını sıkacak. Ama ne varki C# 4.0'ın ayak sesleri yavaş yavaş duyulmaya başlandı. İşte sizlere günlüğüm aracılığıyla ilk defa C# 4.0'daki yeni özelliklerden bahsediyorum. Çok güzel yenilikler olduğu gibi gereksiz gördüğüm şeylerde var. Ama bunlar çok ham veriler henüz, 2-3 yıl içerisinde olgunlaşıp son haline geldiğinde eminimki daha işe yarar hale gelecektir.
1- Recursive Iteration
Recursive metot yazmak artık tarihe karıştı. Koleksiyonlar üzerinde parent-child ilişkisine göre hazır recursive metot tanımlayabileceğiz. Oldukça karışık gibi gözüksede alışında kolay olacağını düşünüyorum. CLR ile ilgili bir değişilik yok, arkada bizim zaten yaptıgımız metot çağrımlarını oluşturuyor. Henüz tasarım aşamasında olduğu için detayı yok..
C# 4.0 da recursive metotlar aşağıdaki gibi tanımlanabilecek gibi duruyor.
public recursive int Metot(ICollection<Personel> col,rec int toplam,rec int ilk,rec int son)
{
}
2- Automatic Class
Metotlara mantıksal olarak birbiriyle ilgili birden fazla parametre geçiş ihtiyacı duyduğumuzda hızlıca sınıf tanımlar, içerisine property'leri ekleyip, standart yapıcı metotlarıda ekleyerek basit bir yapı tanımlarız. Böylece paremetreleri bir grup içerisinde geçilmesi sağlanmış olur. Bunun için C# 3.0'da Anonymous Type özelliği geldi. Ancak ananoymous type'lerın kod yazma zamanında isimleri olmadığı için global anlamda kullanmak oldukça zor oluyordu. Bunun yerine aşağıdaki sınıfı C# 4.0'da şöyle tanımlayacağız.
C# 2.0 Versiyonu
public class Personel
{
private int id;
public int ID
{
get { return id; }
set { id = value; }
}
private string ad;
public string Ad
{
get { return ad; }
set { ad = value; }
}
private DateTime tarih;
public DateTime Tarih
{
get { return tarih; }
set { tarih = value; }
}
}
C# 4.0 Versiyonu
public class Personel
{
prop int ID,string Ad,DateTime Tarih;
}
//Yukarıdaki satıra Visual Studio.NET üzerinde sağ tıklayınca Refactor seçeneklerinde "Expand Properties" seçeneği çıkıyor. Tek bir hamle ile C# 3.0 versiyonuna dönüş yapabileceğiz.
3- Hızlı LINQ to SQL Sorguları
C# 3.0 ile gelen LINQ yapısının SQL'e hızlı bir şekilde entegre etmek için yeni bir using deyimi geliyor: using db.
using db Northwind("constr"); // DataContext sınıfları otomatik olarak yaratılıyor. Şu anda Designer kullanılarak yaratılıyor.
Northwind db = Northwind.Connect();
Personel[] secilenler = from val in personeller
where val.No > 5
select val.Ad
4- Asenkron Metot Çağrımı (Otomatik Thread)
Mevcut Asenkron metot çağrım kalıbına ek olarak metotlar aşağıdaki gibi tanımlandığında metot yeni thread üzerinden çağrılıyor.
Metot(true,5); // asenkron çağrımı aktif hale getirmek için. Metot(5); şeklinde çağrılarak normal çağrımda yapılabilir.
public async void Metot( int a)
{
..
}
5- Singleton Sınıf Tanımlama
Önemli tasarım kalıplarından Singleton sınıfı özellikle framework geliştirenler tarafından sık kullanılıyor. De facto olmuş bir kalıp olduğuna göre artık tek bir tanım ile sınıf singleton haline getirilebilecek.
public singleton class DataManager
{
...
}
Bu değişiklikler ile bir kere daha görüyoruzki C# dili API ile içiçe geçmiş durumda. Genel amaçlı programlama dillerinden beklenmeyen bir çok özellik dile ekleniyor. Umarım ilerde derleme zamanımız 10 katına çıkmaz bu değişikliklerden ötürü.
Diğer yeniliklerden de zaman içerisinde bahsedeceğim.
http://www.seferalgan.com/entrydetail.aspx?id=190
Ortam sanal olsa da, islenen suc gercektir...
|