Site icon Serdar Yılmaz

C# – Değişken Sayıda Parametre Alan Metotlar

Aşağıda yer alan programı inceleyecek olursak; EnBuyuk() metodu int tipinde 2 adet parametre almaktadır ve sayısal değeri en büyük olanı geri döndürmektedir. EnBuyuk() metoduna çağrıda bulunabilmek için sadece ve sadece 2 adet parametre girmemiz gerekmektedir.

private static int EnBuyuk(int sayi1, int sayi2)
{
    if (sayi1 > sayi2)
        return sayi1;
    else
        return sayi2;
}

static void Main(string[] args)
{
    Console.WriteLine(EnBuyuk(100, 250));   // Çıktı:250
}

Bir metoda değişken sayıda parametre gönderebilmek için params anahtar sözcüğünü kullanmamız gerekmektedir. Yukarıdaki örnekte yer alan EnBuyuk() metodu sadece 2 adet parametre alabilmekteydi, şimdi bu metodu değişken sayıda parametre alacak şekilde düzenleyelim;

private static int EnBuyuk(params int[] sayilar)
{
    return sayilar.Max();
}

static void Main(string[] args)
{
    Console.WriteLine(EnBuyuk(100, 250));            // 2 parametre verildi. ÇIKTI:250
    Console.WriteLine(EnBuyuk(518, 456, 537, 931));  // 4 parametre verildi. ÇIKTI:931
    Console.WriteLine(EnBuyuk(258, 174, 56));        // 3 parametre verildi. ÇIKTI:258
}

Görüldüğü üzere parametre sayısında herhangi bir kısıt bulunmamaktadır. Metot, iki parametre verilerek de çağrılabilir, dört parametre verilerek de. Çalışma mantığı ise gayet basittir; params anahtar sözcüğü ile dinamik bir dizi oluşturulur ve parametre olarak gönderilen değerler bu diziye eklenir. Metot içerisinde de dizi içerisindeki parametreler kullanılarak istenilen işlemler yapılabilir.

Uygulama

Bu örnekte özellikle dikkatinizi çekmek istediğim nokta; sabit parametreler ile değişken sayıdaki parametrelerin birlikte kullanılabileceği. CiftSayilar() metoduna girilen ilk parametre, sabit bir parametredir. Sayıların yan yana mı, alt alta mı ekrana yazılacağını belirtecektir. İlk parametreden sonra girilen tüm parametreler “sayilar” dizisi içerisinde tutulacaktır.

Metot; “sayilar” dizisi içerisinde bulunan sayılardan çift olanları ekrana yazdırmaktadır.

private static void CiftSayilar(string duzen,params int[] sayilar)
{
    if (duzen=="yanyana")
    {
        for (int i=0;i<sayilar.Length;i++)
        {
            if (sayilar[i] % 2 == 0)
                Console.Write("{0,-6}", sayilar[i]);
        }
    }
    else if(duzen=="altalta")
    {
        for (int i = 0; i < sayilar.Length; i++)
        {
            if (sayilar[i] % 2 == 0)
                Console.WriteLine(sayilar[i]);
        }
    }
    else
    {
        Console.WriteLine("Böyle bir düzen bulunmamaktadır.");
    }
}

static void Main(string[] args)
{
    CiftSayilar("altalta", 15, 78, 1, 12, 101, 89, 56);
    CiftSayilar("yanyana", 12, 54, 68, 11, 7, 3);
}

Serdar YILMAZ

Exit mobile version