Menu
Coddy logo textTech

İsteğe Bağlı Parametreler

Coddy'nin C# Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası — ders 48 / 70.

İsteğe bağlı parametreler, metot parametreleri için varsayılan değerler tanımlamanıza olanak tanır. Bir çağıran o parametre için bir değer sağlamadığında, varsayılan değer otomatik olarak kullanılır.

Metot imzasında varsayılan bir değer atayarak isteğe bağlı bir parametre oluşturursunuz:

public static void Greet(string name, string greeting = "Hello")
{
    Console.WriteLine(greeting + ", " + name + "!");
}

// Her iki çağrı da çalışır
Greet("Alice");              // Hello, Alice!
Greet("Bob", "Welcome");     // Welcome, Bob!

İsteğe bağlı parametreler, tüm zorunlu parametrelerden sonra gelmelidir. Birden fazla isteğe bağlı parametreye sahip olabilirsiniz ve çağıranlar sağ taraftakilerden herhangi birini atlayabilir:

public static void CreateUser(string name, int age = 0, bool isActive = true)
{
    Console.WriteLine($"{name}, Age: {age}, Active: {isActive}");
}

CreateUser("Emma");                    // Emma, Yaş: 0, Aktif: True
CreateUser("James", 25);               // James, Yaş: 25, Aktif: True
CreateUser("Sarah", 30, false);        // Sarah, Yaş: 30, Aktif: False

Varsayılan değerler derleme zamanı sabitleri olmalıdır - sabit değerler (literaller), const değerleri veya default ifadeleri. Değişkenleri veya metot çağrılarını varsayılan olarak kullanamazsınız. Bu durum, isteğe bağlı parametreleri yapılandırma ayarları ve çoğu çağıranın ortak değerler kullandığı metotlar için ideal hale getirir.

challenge icon

Görev

Kolay

Esnek mesaj formatlaması sağlamak için isteğe bağlı parametreler (optional parameters) kullanan bir bildirim sistemi oluşturalım. Çoğu çağırıcının mantıklı varsayılan değerleri kullanacağı, özelleştirilebilir ayarlara sahip bildirimler gönderebilen bir yardımcı sınıf oluşturacaksınız.

Kodunuzu iki dosya halinde düzenleyeceksiniz:

  • NotificationService.cs: Notifications ad alanı (namespace) içinde, isteğe bağlı parametreleri gösteren bir yönteme sahip bir NotificationService sınıfı oluşturun:
    • SendNotification(string message, string priority = "Normal", bool addTimestamp = true) - Bu yöntem, formatlanmış bir bildirim dizesi döndürmelidir. addTimestamp true olduğunda, mesajın başına [TIMESTAMP] ekleyin. Format, zaman damgası ayarına bağlı olarak şu şekilde olmalıdır: [Priority] Message veya [TIMESTAMP] [Priority] Message.
  • Program.cs: Ana dosyanızda, SendNotification yöntemini üç farklı şekilde çağırarak isteğe bağlı parametrelerin nasıl çalıştığını gösterin - tüm varsayılanları kullanarak, bir parametreyi geçersiz kılarak ve her iki isteğe bağlı parametreyi de geçersiz kılarak.

Üç girdi alacaksınız:

  • Birinci mesaj (tüm varsayılan değerleri kullanacak)
  • İkinci mesaj (varsayılan zaman damgası ile "Urgent" önceliğini kullanacak)
  • Üçüncü mesaj ("Low" önceliğini kullanacak ve zaman damgası olmayacak)

SendNotification yöntemini üç kez çağırın ve her sonucu yazdırın:

  1. Birinci çağrı: yalnızca birinci mesajı geçirin (varsayılanları kullanır: "Normal" önceliği, zaman damgası etkin)
  2. İkinci çağrı: ikinci mesajı "Urgent" önceliği ile geçirin (zaman damgası hala varsayılan olarak true değerini alır)
  3. Üçüncü çağrı: üçüncü mesajı "Low" önceliği ve zaman damgası için false değeri ile geçirin

Örneğin, girdiler System started, Server overload ve Cache cleared ise, çıktı şu şekilde olmalıdır:

[TIMESTAMP] [Normal] System started
[TIMESTAMP] [Urgent] Server overload
[Low] Cache cleared

Aynı yöntemin her üç senaryoyu da nasıl zarif bir şekilde yönettiğine dikkat edin - çağıranlar yalnızca varsayılanlardan değiştirmeleri gerekenleri belirtirler!

Kopya kağıdı

İsteğe bağlı parametreler (optional parameters), metot parametreleri için varsayılan değerler tanımlamanıza olanak tanır. Bir çağıran değer sağlamadığında, varsayılan değer otomatik olarak kullanılır.

Metot imzasında varsayılan bir değer atayarak isteğe bağlı bir parametre oluşturun:

public static void Greet(string name, string greeting = "Hello")
{
    Console.WriteLine(greeting + ", " + name + "!");
}

// Both calls work
Greet("Alice");              // Hello, Alice!
Greet("Bob", "Welcome");     // Welcome, Bob!

İsteğe bağlı parametreler, tüm zorunlu parametrelerden sonra gelmelidir. Birden fazla isteğe bağlı parametreniz olabilir:

public static void CreateUser(string name, int age = 0, bool isActive = true)
{
    Console.WriteLine($"{name}, Age: {age}, Active: {isActive}");
}

CreateUser("Emma");                    // Emma, Age: 0, Active: True
CreateUser("James", 25);               // James, Age: 25, Active: True
CreateUser("Sarah", 30, false);        // Sarah, Age: 30, Active: False

Varsayılan değerler derleme zamanı sabitleri olmalıdır - sabit değerler (literals), const değerleri veya default ifadeleri. Varsayılan değer olarak değişkenleri veya metot çağrılarını kullanamazsınız.

Kendin dene

using System;
using Notifications;

class Program
{
    public static void Main(string[] args)
    {
        // Üç mesajı oku
        string message1 = Console.ReadLine();
        string message2 = Console.ReadLine();
        string message3 = Console.ReadLine();

        // NotificationService örneği oluştur
        NotificationService service = new NotificationService();

        // TODO: SendNotification metodunu üç kez çağır ve her sonucu yazdır:
        // 1. İlk çağrı: sadece message1 değerini geçir (tüm varsayılanları kullanır)
        // 2. İkinci çağrı: message2 değerini "Urgent" önceliğiyle geçir (timestamp varsayılan olarak true olur)
        // 3. Üçüncü çağrı: message3 değerini "Low" önceliğiyle ve timestamp için false değeriyle geçir

    }
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Nesne Yönelimli Programlama bölümündeki tüm dersler