Menu
Coddy logo textTech

'params' Anahtar Kelimesi

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

params anahtar kelimesi, bir metodun aynı türden değişken sayıda argüman kabul etmesini sağlar. Çağıranların manuel olarak bir dizi oluşturmasını gerektirmek yerine, argümanları virgülle ayırarak doğrudan geçirebilirler.

Metot imzasında bir dizi parametresinden önce params anahtar kelimesini yerleştirin:

public static int Sum(params int[] numbers)
{
    int total = 0;
    foreach (int n in numbers)
        total += n;
    return total;
}

// Bu çağrıların tümü çalışır
Console.WriteLine(Sum(1, 2));           // 3
Console.WriteLine(Sum(1, 2, 3, 4, 5));  // 15
Console.WriteLine(Sum());               // 0 (boş dizi)

Derleyici, argümanları otomatik olarak bir diziye sarar. Eğer halihazırda bir diziniz varsa, mevcut bir diziyi doğrudan da geçirebilirsiniz:

int[] values = { 10, 20, 30 };
Console.WriteLine(Sum(values));  // 60

Hatırlanması gereken birkaç kural vardır: bir metodun yalnızca bir tane params parametresi olabilir ve bu, listedeki son parametre olmalıdır. Bunu normal parametrelerle birleştirebilirsiniz:

public static void Log(string prefix, params object[] items)
{
    foreach (var item in items)
        Console.WriteLine(prefix + item);
}

Log("Item: ", "Apple", 42, true);

params anahtar kelimesi, API'leri daha esnek ve kullanıcı dostu hale getirir; bu nedenle Console.WriteLine ve string.Format gibi metotlarda bu anahtar kelimeyle karşılaşırsınız.

challenge icon

Görev

Kolay

Herhangi sayıda değeri işlemek için params anahtar sözcüğünü kullanan esnek bir mesaj biçimlendirici oluşturalım. Değişken sayıda bağımsız değişkenle mesajları biçimlendirebilen bir yardımcı sınıf oluşturacak ve params anahtar sözcüğünün metotları nasıl daha çok yönlü ve çağıran açısından daha kullanışlı hâle getirdiğini göstereceksin.

Kodunu iki dosya arasında düzenleyeceksin:

  • MessageFormatter.cs: MessageFormatter ad alanında, Formatting kullanan iki metoda sahip bir params sınıfı oluştur:
    • Combine(params string[] parts) - sağlanan tüm dizeleri aralarında bir boşluk olacak şekilde birleştirir ve sonucu döndürür
    • FormatList(string label, params int[] numbers) - normal bir parametreyi bir params dizisiyle birleştirir. Etiketi, ardından iki nokta üst üste işaretini ve sonra virgüllerle ayrılmış tüm sayıları döndürmelidir (ör. Scores: 85, 90, 78)
  • Program.cs: Ana dosyanda her iki metodu girdilerle göster. Bir etiket dizesi oku, ardından virgülle ayrılmış tam sayılardan oluşan bir satır oku. Üç sabit kelimeyi birleştirmek için Combine metodunu, etiketi sayılarla birlikte görüntülemek için FormatList metodunu kullan.

İki girdi alacaksın:

  • Bir etiket dizesi (ör. Scores)
  • Virgülle ayrılmış bir tam sayı listesi (ör. 85,90,78,92)

İlk olarak Combine metodunu "Hello", "params" ve "world!" kelimeleriyle çağır ve sonucu yazdır. Ardından virgülle ayrılmış tam sayıları bir diziye ayrıştır ve FormatList metodunu etiket ve tam sayı dizisiyle çağırarak bu sonucu da yazdır.

Örneğin girdiler Scores ve 85,90,78 ise çıktı şu şekilde olmalıdır:

Hello params world!
Scores: 85, 90, 78

Combine metodunun doğrudan herhangi bir sayıda dize kabul ettiğine, FormatList metodunun ise normal parametreleri params ile karıştırabileceğini gösterdiğine dikkat et - params parametresinin yalnızca son sırada olması gerekir. Ayrıca mevcut bir diziyi params metoduna geçirebilirsin; ayrıştırılmış tam sayılarla yapacağın şey de tam olarak budur!

Kendin dene

using System;
using Formatting;

class Program
{
    public static void Main(string[] args)
    {
        // Girdileri oku
        string label = Console.ReadLine();
        string numbersInput = Console.ReadLine();
        
        // TODO: MessageFormatter.Combine metodunu "Hello", "params" ve "world!" ile kullanın
        // ve sonucu yazdırın
        
        
        // TODO: Virgülle ayrılmış tam sayıları bir int dizisine ayrıştırın
        // İpucu: Dizeyi bölün ve her parçayı int türüne dönüştürün
        
        
        // TODO: MessageFormatter.FormatList metodunu label ve int dizisi ile kullanın
        // ve sonucu yazdırın
        
    }
}
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

Kendi başına pratik yap: Online C# derleyicisi