|
C# 4.0
Herkese merhabalar;
Bu makalemizde sizlere c# dilinin 4. Versiyonunda .net Framework 4.0 ve visual
studio 2010 ile beraber gelecek olan özellik ve yeniliklerden bahsediyor
olacağız.
İsterseniz makalemize dilin gelişimini kısaca inceleyererk başlayalım. C# 1.0’da
temel tema ve geliştirilen yönetilen kod idi. Daha sonra C# 2.0 ile birlikte
generic yapı dile eklenildi. Son olarak ise C# 3.0 ile birlikte dile entegre
sorgulama olarak türkçeye çevirebileceğimiz Language Integrated Query (LINQ)
C#’a entegre edildi. Bu makalemizin konusu olan C# 4.0’da ise temel tema dinamik
programlama olucak.
C# 4.0 esas olarak 4 ana başlıkta incelenebilir.
1- Dinamik tipli Nesneler (Dynamic Typed Objects)
2- Opsiyonel ve isimlendirilmiş parametreler
3- Gelişmiş COM birlikteliği
4- Co- ve Contra-Farklılığı
Bu makalemizde Dinamik tipli nesneler ve opsiyonel ve isimlendirilmiş
parametreler ile neler yapabiliriz bunlara değineceğiz. Konu ile ilgili ayrıca
MSDN üzerinde kaynak bulabilirsiniz. Bu makalemizde geliştireceğimiz
örneklerimizi .net framework 4.0’ın takım arkadaşı olan ve henüz beta1
aşamasında bulunan visual studio 2010 üzerinde gerçekleştiriyor olacağız.
Dinamik Programlama
C# 4.0 ile birlikte dile yeni eklenecek özelliklerden biri olan dinamik tipli
nesneler sayesinde dinamik programlamaya tam destek veriliyor. Dinamik tipli
nesnelerini kısaca tanımlamak gerekirse nesne tiplerinin compile time dediğimiz
derleme zamanı yerine run-time dediğimiz çalışma zamanında belirlenmesidir. C#
3.0 ile birlikte dönüş tipini tahmin edemediğimiz sonuçları saklamak için
var
anahtar kelimesini kullanıyorduk. Dinamik tipli nesneleri tanımlamak için ise
imdadımıza dynamic anahtar kelimesi yetişiyor. Bu anahtar kelime derleyiciye
tanımlanan nesnenin tipinin derleme zamanında değilde dynamic language
runtime (DLR) olarak isimlendirdiğimiz yapı sayesinde çalışma zamanında
belirleneceğini bildiriyor. Şunu bir kez daha hatırlatmakta fayda görüyorum;
dynamic anahtar kelimesi var anahtar kelimesinden farklıdır. Dilerseniz vakit
kaybetmeden bu özelliği bir örnekle pekiştirerek daha iyi anlamaya çalışalım.
Visual Studio 2010’da bir konsol uygulaması oluşturduktan sonra;
dynamic x;
şeklinde ilk dinamik değişkenimizi tanımladık. Hemen burada değişkenin ilgili
metod ve özelliklerine ulaşmak istediğimizde bu durumda intelli-sense desteğinin
sağlanmadığını göreceğiz.

Dilerseniz değişkenimize ilk değerini atayarak örneğimize devam edelim.
dynamic x;
x = 10;
Console.WriteLine(x.ToString());
Console.ReadLine();
Yukarıdaki kod parçacığı ile x adlı dinamik değişkenimize 10 değerini atayıp ki
bu değer atamadan hemen sonra x artık int tipinde bir değişken oluyor. İnt
sınıfının ToString() metodunu çağırarak ilgili değişkeni string tipine çevirip
ekrana yazdırıyoruz. Burada dikkat edilmesi gereken nokta ToString metodunu
yazarken derleyici tarafından bize intelli-sense sağlanmaması ve eğer metodu
herhangi bir şekilde yanlış yazarsak çalışma zamanlı bir hata alacağımızdır.
Aşağıda gördüğünüz gibi ToString metodunu Tostring gibi yazsak dahi çalışma
zamanlı istisna (exception) alıyoruz.

Gördüğünüz gibi oldukça esnek bir özellik, bu özellik sayesinde biz
developer’ların işleri bir ölçü daha kolaylaşıyor.
Opsiyonel ve isimlendirilmiş Parametreler
C# 4.0 ile birlikte gelen bir diğer özelliğimiz ise sınıfların yapıcı
metodlarındaki parametrelere isim verebilme ve bazı parametreleri opsiyenel
bırakabilme imkanı sağlayan Opsiyonel ve İsimlendirilmiş parametreler özelliği.
Dilerseniz vakit kaybetmeden örneğimize geçerek bu yeni özelliğin bizlere neler
getirdiğini yakından görelim.
Visual Studio 2010’da açtığımız yeni console uygulamamıza Çalışan adlı bir sınıf
ekliyoruz. Sınıfımızı varsayılan yapıcı metodunu C# 3.0 ile bir kaç kez aşırı
yükleyerek aşağıdaki şekilde tanımlarken,
public class Calisan
{
public string İsim { get; set; }
public string Soyisim { get; set; }
public string Departman { get; set; }
public string DogumYeri { get; set; }
public Calisan(string isim, string soyisim)
{
İsim= isim;
Soyisim= soyisim;
Departman= "Bilgisayar";
DogumYeri= string.Empty;
}
public Calisan(string isim, string soyisim, string departman)
{
İsim= isim;
Soyisim= soyisim;
Departman= departman;
DogumYeri= string.Empty;
}
public Calisan(string isim, string soyisim, string departman,
string dogumYeri)
{
İsim= isim;
Soyisim= soyisim;
Departman= departman;
DogumYeri = dogumYeri;
}
}
Opsiyonel ve isimlendirilmiş parametreler ile bir kaç satırda aşağıdaki gibi
tanımlayabiriz.
public Calisan(string isim, string soyisim, string departman = "N/A", string
dogumyeri = "")
{
İsim = isim;
Soyisim = soyisim;
Departman = departman;
DogumYeri = dogumyeri;
}
Yapıcı metod’umuzu bu şekilde tanımladıktan sonra eğer bu sınıftan bir nesne
türetmek istersek intelli-sense’de alıştığımız tooltip’ten farklı olarak
aşağıdaki gibi bir yapı ile karşılaşıcaz.

Bu Tooltip’ten anlamamız gereken Departman field’ımızın varsayılan olarak
Bilgisayar değerine ayrıca dogumyeri field’ımızın varsayılan olaran boş bir
değere sahip olduğu eğer yapıcı metod’da buna bir değer vermez isek varsayılan
olarak bu değeri alacağıdır.
Ayrıca Nesnemizi örneklerken aşağıdaki şekilde örneklemeler yapabiliriz. Bu
örneklerimizi yapmadan önce Calisan sınıfımızın ToStiring metodunu aşağıdaki
gibi override ederek (ezerek) istediğimiz çıktıları daha kolay gözlemlememizi
sağlıyoruz.
public override string ToString()
{
string str;
str = this.İsim + " " + this.Soyisim + " " + this.Departman + " " +
this.DogumYeri;
return str;
}
Artık ilgili sınıfımızdan nesnelerimizi türetmeye başlıyoruz.
Calisan c = new Calisan("Fatih", "Coşkun");
Console.WriteLine(c.ToString());
c = new Calisan("Ali", "Rıza", departman: "Yazılım", dogumyeri:"istanbul");
Console.WriteLine(c.ToString());
c = new Calisan("Veli", "Demir", dogumyeri: "Ş.Karahisar");
Console.WriteLine(c.ToString());
Console.ReadLine();
Gördüğümüz gibi sınıfımızın yapıcı metodunda isimledirilmiş ve opsiyonel
parametreleri kullanarak ve sadece tek bir yapıcı metod yazarak çok farklı
şekilde örneklemeler yapabiliyoruz. Ayrıca tüm bu örneklemeleri yaparken Visual
Studio 2010 bize intelli-sense ile yardımcı oluyor.

Kodumuzu hatasız şekilde derleyip çalıştırdıktan sonra aşağıdaki çıktımızı
alıyoruz.

Evet değerli okurlarım bir makalenin daha sonuna geldik, yeni bir makalede
tekrar görüşmek dileğiyle Hoşçakalın..
|