C# params Nedir? Kullanımı

C# programlama dilinde yer alan ve metotlara değişken sayıda parametre göndermeye imkan veren params anahtar kelimesi nedir ve kullanımı ile ilgili bilgiler yer alıyor.

C# params nedir?

Metotların değişken sayıda parametre almasına imkan veren bir anahtar kelimedir.

Metotlar oluşturulurken kullanılacak parametre sayısı önceden belirlenir.

Örneğin; İki adet sayı toplanmak istediğinde aşağıdaki gibi bir metot yazılabilir.

int Topla(int sayi1, int sayi2);

Toplanacak sayı adedi üç adet olduğunda aşağıdaki gibi bir metot yazılabilir.

int Topla(int sayi1, int sayi2, int sayi3);

Bazen parametre sayısı tam belli olmayabilir.

Bu durumda her eklenen parametre için yeni bir metot tanımlanabilir.

Ancak bu etkili bir çözüm olmayacaktır.

Parametre sayısı belli olmayan metot tanımlamak için params özelliği kullanılabilir.

int Topla(params int[] sayilar);

Artık Topla metodu int türünden değişken sayıda parametre alabilir.

Değişken türü belli olmayan durumlarda C# içerisindeki her şeyin object türünden türediği özelliği kullanılabilir.

void Yazdir(params object[] gelenDegerler);

Gönderilen parametre tür bilgisi object sınıfında yer alan GetType metodu ile alınabilir.

using System;

class Program {

    static void Main() {

        DegerAl(10);
        DegerAl(10, 30f);
        DegerAl(10, 30f, 40.3);
        DegerAl(10, 30f, 40.3, "Yusuf");
        DegerAl(10, 30f, 40.3, "Yusuf", 3M);
    }

    static void DegerAl(params object[] gelenDegerler) {
        foreach (object eleman in gelenDegerler) {
            Console.WriteLine("Değer: {0} - Tipi: {1}", eleman, eleman.GetType().Name);
        }
        Console.WriteLine();
    }
}

Aşağıda params özelliği ile gönderilen sayılardan en büyüğünü bulan örnek metot yer almaktadır.

using System;

class Program {

    static void Main() {

        int sonuc = EnBuyukSayiyiBul(10, 5, 7, 99, 1531, 22, 331313);
        Console.WriteLine(sonuc);
    }

    static int EnBuyukSayiyiBul(params int[] sayilar) {
        int enBuyukSayi = -1;

        if(sayilar.Length > 0) {
            enBuyukSayi = sayilar[0];
        }

        foreach (int sayi in sayilar) {
            if(enBuyukSayi < sayi) {
                enBuyukSayi = sayi;
            }
        }

        return enBuyukSayi;
    }
}

Son

Bu özellik kullanıldığında metodun aşırı yüklenmiş olduğu varsayılır.

C# aşırı yüklenmiş metotları seçerken önceliği normal metotlara verir.

using System;

class Program {

    static void Main() {

        Topla(1, 2);
    }

    static void Topla(int sayi1, int sayi2) {
        Console.WriteLine("Ben normal metodum.");
    }

    static void Topla(params int[] gelenSayilar) {
        Console.WriteLine("Ben params kullanılmış metodum.");
    }
}

Bu özellik C# içerisinde yazı formatlama için kullanılan String.Format ve Console.WriteLine metotlarında da kullanılmaktadır.

using System;

class Program {

    static void Main() {

        string Ad = "Yusuf";
        string Soyad = "SEZER";
        Console.WriteLine("Adınız: {0}, Soyadınız: {1}", Ad, Soyad);

        string sonuc = String.Format("Adınız: {0}, Soyadınız: {1}", Ad, Soyad);
    }
}

C# Derslerine buradan ulaşabilirsiniz.

Hayırlı günler dilerim.

Yusuf SEZER

Yusuf SEZER

Computer Engineer who interested about web technologies, algorithms, artificial intelligence and embedded systems; constantly exploring new technologies.


Bunlara'da bakmalısın!