C# Eğitimleri – Veri Tipleri 11 – Dynamic

 

C# Eğitimlerine Dynamic veri tipiyle devam ediyoruz.

Bir önceki eğitim yazılarımda var ve object veri tiplerini yazmıştım. Dynamic veri tipi bu iki tipten geri kalan eksikliği doldurmak için C# 4.0 ile beraber .net kodlayıcılarının hayatına girdi.

Dynamic Veri Tipi

Dynamic veri tipi bütün veri tiplerini tutabilen değişkendir. Peki var ve object tipinden farkı nedir?

Dynamic tipi derleme anında belli koşulların gerçekleşmesini beklemez. Yani var tipi derleme anında değişkene ilk değeri ister. Ram de o tipte yer ayrılır ve daha sonra o tipten daha farklı bir tipi atamanıza izin vermez. Ama dynamic tipi derleme anında istediğiniz şekilde değer ataması yapabilirsiniz. Derleme anında bir değerlendirme yapmayacaktır.

Object tipiyle farkı nedir derseniz. Object tipinde boxing ve unboxing olayları vardı. Atanmış bir değişkenin değerini almak için mutlaka unboxing yapmak gerekiyordu. Bu durumda kod ve veri güvenliği açısından bir sıkıntı doğurabilmektedir.

Dynamic tipinde ise böyle bir durum söz konusu değildir.

Dynamic Tanımlama

Dynamic Değeri Derleme Anında Türünü Değiştirme

Dynamic veri tiplerinde kodlama anında istediğimiz şekilde veri tipini değiştirebiliriz. İlk olarak int değer verdiğimiz dynamic değişkene sonrasında string değer atayabiliriz. Bu durum sonunda herhangi bir hata geriye dönmeyecektir.

 

 

Dynamic Veriden Değer Alma

 

 

Böyle bir kodlama yaptığımız anda derleme anında herhangi bir hata almayız. Çünkü dynamic veri tipine verdiğimiz değerler paketlenir ve çalışma anında açılır.

Yazdığımız kodlama sonucunu ekranda görmek istersek tip çalışma anında belirlendiğinde string olarak döneceği için bu işlem çalışma anında da hata vermeyecektir.

Ama tür string harici bir tip olsaydı o zaman çalışma anı hatası alacaktık.

 

 

Dynamic Tipinin Kullanımları

1. dynamic tipi bir field olarak kullanılabilir.

static dynamic X;

2. dynamic tipi bir property olarak kullanılabilir.

dynamic X {get; set;}

3. dynamic tipi bir metodun geri dönüş tipi olarak kullanılabilir.

 

public dynamic X(dynamic D)

{
return D;

}

 

4. dynamic tipi is ve as gibi belirteçlerle kullanılabilir.

dynamic X=2;

if(X is int)
{
// Kodlar
}

 

Burada sorduğumuz soru şudur. X dynamic değişkeninin türü int ise bize true değerini döner. Eğer değilse false değerini döner.

As kullanımı ise boxing yöntemi yapmadan farklı türdeki bir değer dynamic değişkene atamak için kullanılabilir.

int X=0;
dynamic D;
D=X as dynamic;

5. Boxing Yöntemi İle Değer Atama

Yine farklı türde bir değişken boxing işlemi uygulanacak dynamic türde dynamic bir değişkene atanabilir.

 

int X=0;

dynamic D;
D=(dynamic)X;

 

Özel Durum

 

if(someVar is dynamic)

 

Burada someVar ifadesi herhangi bir değeri, değişkeni ifade etmektedir. Burada someVar değişkeninin değeri null olmadığı sürece bu ifade her zaman true değerini geri dönecektir.

6. typeof metodu ile kullanılabilir.

Console.WriteLine(typeof(List<dynamic>));

Böylelikle detaylı bir şekilde değinmeye çalıştığım dynamic veri tiplerinin de sonuna geldik. Bir sonraki eğitim yazımda görüşmek üzere.

Facebook Sayfamizdan Bizleri Takip Edebilirsiniz
Murat Bilginer

Industryolog Akademi Founder – Endüstri Mühendisi
Canias ERP Troia Geliştiricisi & Yazılım Uzmanı
7 Yıldır bildiğini paylaşmak için çabalayan bir blogger.

http://muratbilginer.net/