"Enter"a basıp içeriğe geçin

C# Varsayılan Parametre Değerleri

Merhaba arkadaşlar, bu yazımda C# varsayılan parametre değerleri konusunu anlatacağım. Varsayılan parametre değerleri, bir metot tanımlarken parametrelere önceden belirlenmiş bir değer atamak anlamına gelir. Bu sayede metot çağrılırken parametre değeri belirtilmezse varsayılan değer kullanılır. Böylece metot çağrılarını daha kısa ve esnek yapabiliriz.

Varsayılan Parametre Değerleri Nasıl Tanımlanır?


Varsayılan parametre değerleri tanımlamak için metot tanımında parametre isminden sonra eşittir (=) işareti ve istediğimiz değeri yazmak yeterlidir. Örneğin, aşağıdaki metot tanımında iki tane varsayılan parametre değeri tanımladık: ad ve soyad. Bu parametrelere varsayılan olarak “Ali” ve “Yılmaz” değerlerini atadık.

static void Selamla(string ad = "Ali", string soyad = "Yılmaz") {
    Console.WriteLine("Merhaba " + ad + " " + soyad);
}

Bu metodu çağırmak için parametre değerlerini belirtmek zorunda değiliz. Eğer belirtmezsek varsayılan değerler kullanılır. Örneğin, aşağıdaki kodda Selamla() metodu hiçbir parametre vermeden çağrıldığında varsayılan olarak “Merhaba Ali Yılmaz” yazdırır.

Selamla(); // Merhaba Ali Yılmaz

Eğer parametre değerlerini belirtmek istersek, normal şekilde yazabiliriz. Örneğin, aşağıdaki kodda Selamla() metodu “Ahmet” ve “Demir” parametreleri ile çağrıldığında “Merhaba Ahmet Demir” yazdırır.

Selamla("Ahmet", "Demir"); // Merhaba Ahmet Demir

Değer Atarken Nelere Dikkat Etmeliyiz?

Varsayılan parametre değerleri ile ilgili dikkat etmemiz gereken birkaç nokta vardır. Bunlardan ilki, varsayılan parametre değerlerinin sadece metot tanımında belirtilebileceğidir. Metot çağrısında varsayılan parametre değeri belirtmek hata verir. Örneğin, aşağıdaki kodda Selamla() metodu çağrılırken ad parametresine varsayılan olarak “Ali” değerini atamaya çalıştık. Bu hatalı bir kullanımdır.

Selamla(ad = "Ali", "Demir"); // Hata: Varsayılan argümanlar yalnızca son argümanlarda belirtilebilir.

İkinci nokta ise, varsayılan parametre değerlerinin sadece son argümanlarda belirtilebileceğidir. Eğer bir metotta birden fazla varsayılan parametre değeri tanımlarsak, bunların en sondan başlayarak sırada olması gerekir. Aksi takdirde hata alırız. Örneğin, aşağıdaki metot tanımında ilk parametreye varsayılan bir değer atadık ama ikinci parametreye atamadık. Bu hatalı bir kullanımdır.

static void Selamla(string ad = "Ali", string soyad) { // Hata: Varsayılan argümanlar yalnızca son argümanlarda belirtilebilir.
    Console.WriteLine("Merhaba " + ad + " " + soyad);
}

Üçüncü nokta ise, varsayılan parametre değerlerinin sabit (const) veya derleme zamanında (compile-time) bilinen değerler olması gerektiğidir. Yani, varsayılan parametre değerleri olarak değişkenler, metotlar, özellikler (properties) gibi çalışma zamanında (run-time) bilinen değerler kullanılamaz. Örneğin, aşağıdaki metot tanımında varsayılan parametre değeri olarak DateTime.Now özelliğini kullandık. Bu hatalı bir kullanımdır.

static void Selamla(string ad, string soyad, DateTime dogumTarihi = DateTime.Now) { // Hata: Varsayılan parametre değeri sabit bir ifade olmalıdır.
    Console.WriteLine("Merhaba " + ad + " " + soyad);
    Console.WriteLine("Doğum tarihiniz: " + dogumTarihi);
}

Varsayılan parametre değerleri ile ilgili son nokta ise, varsayılan parametre değerlerinin isimlendirilmiş argümanlar (named arguments) ile birlikte kullanılabileceğidir. İsimlendirilmiş argümanlar, metot çağrısında parametre isimlerini belirterek istediğimiz sırada parametre değerleri verebilmemizi sağlar. Örneğin, aşağıdaki metot tanımında üç tane varsayılan parametre değeri tanımladık: ad, soyad ve yas.

static void Selamla(string ad = "Ali", string soyad = "Yılmaz", int yas = 20) {
    Console.WriteLine("Merhaba " + ad + " " + soyad);
    Console.WriteLine("Yaşınız: " + yas);
}

Bu metodu çağırırken isimlendirilmiş argümanlar kullanarak istediğimiz parametreyi belirtebiliriz. Örneğin, aşağıdaki kodda Selamla() metodu çağrılırken sadece yas parametresini belirttik. Diğer parametreler varsayılan değerlerini aldı.

Selamla(yas: 25); // Merhaba Ali Yılmaz
// Yaşınız: 25

İsimlendirilmiş argümanlar sayesinde parametre sırasını da değiştirebiliriz. Örneğin, aşağıdaki kodda Selamla() metodu çağrılırken soyad ve ad parametrelerini ters sırada verdik.

Selamla(soyad: "Demir", ad: "Ahmet"); // Merhaba Ahmet Demir
// Yaşınız: 20

Bu şekilde metot çağrılarını daha esnek ve okunabilir yapabiliriz.

Sonuç olarak, varsayılan parametre değerleri C# programlama dilinde metot tanımlarken ve çağırırken bize kolaylık sağlayan bir özelliktir. Varsayılan parametre değerleri tanımlarken ve kullanırken dikkat etmemiz gereken bazı kurallar vardır. Bu kuralları iyi anlamak ve uygulamak önemlidir. Umarım bu yazım yardımcı olmuştur. Soru, görüş ve önerilerinizi yorumlarda paylaşabilirsiniz. Herkese başarılar dilerim.

C# ile ilgili diğer yazılarım için: C# – Bizneyapiyoruzki

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.