C#’ın ilk üç sürümünde Visual Basic’in aksine isteğe bağlı parametre desteği yoktu. C# 4.0 ile bu destek verilmeye başlandı. C# 4.0’da isteğe bağlı parametrelerin nasıl kullanıldığını aşağıda görebilirsiniz. Kullanılması isteğe bağlı olan parametreye genel alışkanlıkla söz konusu tipin varsayılan değeri aktarılmaktadır.
privatestatic int Topla(int sayi1, int sayi2=0, int sayi3=0)
{
return sayi1 + sayi1 + sayi3;
}
Bu şartlarda bu metot bir veya 2 parametre ile çağrılırsa eksik parametrenin 0 olduğu varsayılır. Bu metodun 1. parametresi isteğe bağlı olmadığı için bu metot parametresiz çağrılamaz. Örneğin bu metot aşağıdaki gibi işletildiğinde 3. parametrenin 0 olduğu varsayılır.
privatevoid button1_Click(object sender, EventArgs e)
{
int number1 = 100;
int number2 = 200;
int sonuc = Topla(number1, number2);
MessageBox.Show(sonuc.ToString());
}
Bu örnekte Number2 adını verdiğim değişkenin 2. veya 3. parametrenin yerini tutmasının önemi yoktur. Başka bir deyişle eksik parametrenin hangisi olduğunun önemi yoktur. Ancak bazen metot çağrılırken kullanılmayan veya kullanılan parametrelerin hangileri olduğu önemli olmaktadır. Konunun açığa çıkması için aşağıdaki gibi 3 parametreli bir metot hazırladım.
privatestatic string birlestir(string ad, string telefon, string adres)
{
return "Ad :" + ad + "Telefon :" + telefon + "Adres:" +adres;
}
Bu metot aşağıdaki gibi 3 parametre ile çağrılırsa sorunsuz çalışır.
privatevoid button1_Click(object sender, EventArgs e)
{
string ad1 = textBox1.Text;
string tel1 = textBox2.Text;
string adres1 = textBox3.Text;
string sonuc = birlestir(ad1, tel1, adres1);
MessageBox.Show(sonuc.ToString());
}
Şimdi birlestir() adını verdiğim bu metodun 2. ve 3. parametrelerinin isteğe bağlı olmasını sağlayacağım.
privatestatic string birlestir(string ad, string telefon="", string adres="")
{
return "Ad :" + ad + "Telefon :" + telefon + "Adres:" +adres;
}
Bu şartlarda bu metot 2 parametre ile işletilirse sorunlar yaşanabilir. Örneğin formdaki 1. ve 3. TextBox’a bilgi girilip bu metot aşağıdaki gibi işletilirse adres bilgisinin başına “Telefon” sabit bilgisi yazılır.
privatevoid button1_Click(object sender, EventArgs e)
{
string ad1 = textBox1.Text;
string tel1 = textBox2.Text;
string adres1 = textBox3.Text;
string sonuc = birlestir(ad1, adres1);
MessageBox.Show(sonuc.ToString());
}
Bu sorunun çözümü parametreleri isimlendirmektir. Bu işlemin nasıl yapıldığını aşağıda görebilirsiniz. Bu ayarlamadan sonra birlestir() metodu işletilirken kendisine 2. parametre olarak verilen bilgi “adres” adlı 3. parametre ile eşleştirilir.
private void button1_Click(object sender, EventArgs e)
{
string ad1 = textBox1.Text;
string tel1 = textBox2.Text;
string adres1 = textBox3.Text;
string sonuc = birlestir(ad1, adres:adres1);
MessageBox.Show(sonuc.ToString());
}