Sınırsız Sayıda Parametre Tanımlama – Params

Geliştirdiğimiz projelerde metod yazarken genellikle belli bir parametre alan yada almayan metodlar yazarız. Ancak bağzı durumlarda metodumuza göndereceğimiz parametrelerin kaç tane olacağını bilemeyebiliriz. Birden çok değişken saklayan bir dizi göndermek isteyebiliriz. Böyle bir ihtiyacımız olduğunda yardımımıza params anahtar kelimesi gelir. Params anahtar kelimesi ile metodumuz içerisine bir dizi gönderebiliriz. Params anahtar kelimesini kullanırken dikkat etmemiz gereken birkaç konu vardır. Params anahtar kelimesini kullanırken dikkat etmemiz gerekenler;

  • Metod içerisine göndereceğimiz dizi tek boyutlu olmalıdır.
  • Bir metodda sadece bir tane params anahtar kelimesini kullanmalıyız.
  • Params ile dizi gönderdiğimiz metodda, başka parametreler de gönderebilmek için params anahtar kelimesini en son parametre olarak tanımlamalıyız.

Ufak bir kullanım örneği yapacağım. Örneğimde int SumNumbers(params int[]) adında bir metod tanımlıyorum ve int tipinde bana gelen dizi içerisindeki sayıların toplamını bulup sonucu geri aktarıyorum.

[csharp]

static int SumNumbers(params int[] numbers)
{
int total = 0;
foreach (int i in numbers)
{
total += i;
}
return total;
}

[/csharp]

Metodumuzu kullanalım.

[csharp]

Console.WriteLine("Girilen Sayıların Toplamı: " + SumNumbers(5, 5, 5, 5, 5));

[/csharp]

Aynı metoda bu sefer string türünde ekrana yazdıracağım mesajı parametre olarak ekliyorum.

[csharp]

static void WriteTotal(string message, params int[] numbers)
{
int total = 0;
foreach (int i in numbers)
{
total += i;
}
Console.WriteLine("{0}= {1}", message, total);
}

[/csharp]

Metodumuzu çağıralım.

[csharp]

WriteTotal("Girilen Sayıların Toplamı:", 2, 3, 4, 5);

[/csharp]

csharp_params

 

Mesut Güneş

Selçuk Üniversitesi Bilgisayar programcılığı bölümünden mezun olduktan sonra birçok firmada Yazılım, İş zekası ve Veritabanı Uzmanı olarak çalıştım. Şuan Türkiye’nin en büyük şirketlerinden biri olan Doğan Online’da Veritabanı Yöneticisi olarak çalışıyorum.

You may also like...

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.