Csharp 4.0 ile gelen yeniliklerden bir taneside isimli ve opsiyonel parametrelerdir. Method overloading ile çözülen bir methodu birden fazla imza ile çağırma olayını biraz daha kolaylaştırmak için getirilmiş güzel bir yeniliktir.
Kısaca özetlemek gerekirse önceleri Selamla diye bir method yazdığımızda ve bu method sadece string bir adSoyad ile çağrılabilmesi ayrıca opsiyonel olarak yaş , kilo ve cinsiyet parametreleri ile çağrılabilmesi için 4 adet method tanımı yapmamız ve genellikle en fazla parametre alan method içeriğinde işlemleri yapıp diğer methodlardan bu methodu default değerler ile çağırmamız söz konusu idi.
CSharp 4.0 ile gelen Opsiyonel parametre özelliği ile artık tek bir method yazarak istediğimiz parametreleri opsiyonel olarak bırakıp tanım içerisinde default değerlerini verebiliyoruz.
Bu şu şekilde gerçekleşiyor :
public string Selamla(string adSoyad, int yas = 0, int kilo = 0, bool erkekMi = true){...}
Burdaki tanımda yas,kilo ve erkekMi parametreleri opsiyonel olarak bırakılıyor böylece; sadece adSoyad göndererek bu methodu çağırabiliyoruz. İstersek sırayla adSoyad,yas parametrelerini ve sırası bozulmadan diğerlerinide bu şekilde eskiden kullandığımız gibi kullanabiliriz. Ancak sadece adSoyad ve erkekMi parametrelerini göndererek çağırabilmek için İsimli çağırım kullanmalıyız.
Buda şu şekilde gerçekleşiyor :
Selamla("Eylem", erkekMi : false);
Selamla(adSoyad: "Eylem", erkekMi: false);
Böylece opsiyonel parametreleri istediğimiz sıra ve şekilde kullanabilir hale geliyoruz buda bizim gereksiz yere tonlarca overload method yazdırmayarak zaman kazandırıyor.
İlgili örneğin tüm kodları için :
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show(Selamla("Yılmaz"));
MessageBox.Show(Selamla("Yılmaz", 23));
MessageBox.Show(Selamla("Yılmaz", 23, 78));
MessageBox.Show(Selamla("Eylem", 25, 49, false));
MessageBox.Show(Selamla("Eylem", erkekMi : false));
MessageBox.Show(Selamla(adSoyad: "Eylem", erkekMi: false));
}
public string Selamla(string adSoyad, int yas = 0, int kilo = 0, bool erkekMi = true)
{
string sonuc = String.Format("Merhaba {0} {1} ", adSoyad,erkekMi ? "Bey": "Hanım");
if (yas > 0)
{
sonuc += Environment.NewLine + "Yaşınız = " + yas;
}
if (kilo > 0)
{
sonuc += Environment.NewLine + "Kilonuz = " + kilo;
}
return sonuc;
}
Son Yorumlar