Yazılım
C# 4.0 Dynamic Type (Dinamik Tip) Kullanımı
17 Mart 2009
1 dk okuma
3090
0
C# 4.0 ile birlikte "dynamic" isimli yeni bir static tip var. Dynamic tipi değişkenin tipinin dinamik olarak atanmasını (Dynamic Dispatch) sağlıyor.
Örneğin Icecek ve yiyecek isimli iki tipimiz var. Kullanıcının seçim yapacağı bir metot yazalım. Bu metot Menu isimli bir Enum alsın. Bu enumun değerine göre de geriye değer döndürsün. C# 4.0 ile birlikte gelen Dynamic tipini kullanarak geriye dönen tipin dinamik olarak belirlenmesini sağlayabiliyoruz.
void Main(string[] args)
{
// C# 4.0 Öncesi
Icecek secim = NeAlirsiniz(Menu.Icecek) as Icecek; // Metodun döndürdüğü tipi cast ederek Icecek tipine çevirmemiz gerekiyor
secim.IcecekIc();
// C# 4.0 Dynamic Language Runtime
dynamic secim2 = NeAlirsiniz(Menu.Icecek); // Tip dinamik olarak belirleniyor
secim2.IcecekIc();
// Tipine bakalım...
Console.WriteLine(secim2.GetType().Name);
}
static Object NeAlirsiniz(Menu menu)
{
if(menu == Menu.Icecek)
return new Icecek();
else
return new Yiyecek();
}
enum Menu
{
Yiyecek,
Icecek
}
public class Icecek
{
public void IcecekIc()
{
Console.WriteLine("Yarasın..");
}
}
public class Yiyecek
{
public void YemekYe()
{
Console.WriteLine("Afiyet olsun..");
}
}
Örneğin Icecek ve yiyecek isimli iki tipimiz var. Kullanıcının seçim yapacağı bir metot yazalım. Bu metot Menu isimli bir Enum alsın. Bu enumun değerine göre de geriye değer döndürsün. C# 4.0 ile birlikte gelen Dynamic tipini kullanarak geriye dönen tipin dinamik olarak belirlenmesini sağlayabiliyoruz.
void Main(string[] args)
{
// C# 4.0 Öncesi
Icecek secim = NeAlirsiniz(Menu.Icecek) as Icecek; // Metodun döndürdüğü tipi cast ederek Icecek tipine çevirmemiz gerekiyor
secim.IcecekIc();
// C# 4.0 Dynamic Language Runtime
dynamic secim2 = NeAlirsiniz(Menu.Icecek); // Tip dinamik olarak belirleniyor
secim2.IcecekIc();
// Tipine bakalım...
Console.WriteLine(secim2.GetType().Name);
}
static Object NeAlirsiniz(Menu menu)
{
if(menu == Menu.Icecek)
return new Icecek();
else
return new Yiyecek();
}
enum Menu
{
Yiyecek,
Icecek
}
public class Icecek
{
public void IcecekIc()
{
Console.WriteLine("Yarasın..");
}
}
public class Yiyecek
{
public void YemekYe()
{
Console.WriteLine("Afiyet olsun..");
}
}
Yorumlar (0)
Henüz yorum yok. İlk yorumu sen yap!