C# ile bugüne kadar paylaştığım uygulamalarda aslında params anahtar sözcüğü ile karşılaştığımız örnekler de oldu ama params anahtar sözcüğünün kullanımı ve örnekleri için ayrı bir başlık oluşturmak istedim. Örneğin 18 overload'u olan Console.WriteLine metodunun bir overload parametreleri şu şekilde:
params object [] arg
params anahtar sözcüğü, bir metoda istediğimiz sayıda parametre gönderebilmek için kullanabileceğimiz bir anahtar sözcültür. params anahtar sözcüğünü daha iyi anlamak için aşağıdaki gibi kendi metodumuzu yazalım ve bu metodu farklı parametrelerle çağıralım.
Örnek 1:
static void Main(string[] args)
{
ParamsYazdir(); //hiç parametre yok ki yazdırayım
ParamsYazdir("merhaba"); //merhaba
ParamsYazdir("merhaba","reitix"); //merhaba reitix
ParamsYazdir("merhaba","arkadaşlar","kanalıma","hoşgeldiniz"); //merhaba arkadaşlar kanalıma hoşgeldiniz
ParamsYazdir("lutfen","beğenmeyi","ve","abone","olmayı","unutmayın"); //lutfen beğenmeyi ve abone olmayı unutmayın
}
public static void ParamsYazdir (params string[] kelimeler)
{
if (kelimeler.Length.Equals(0))
System.Console.WriteLine("hiç parametre yok ki yazdırayım");
else
{
for (int i = 0; i < kelimeler.Length; i++)
{
System.Console.Write(kelimeler[i] + " ");
}
System.Console.WriteLine("");
}
}
Örnekten de görebileceğimiz gibi tek bir varyasyonu olan ParamsYazdir metodunun hiçbir overload'u olmamasına rağmen istediğimiz sayıda parametre ile kullanabilmiş olduk.
Örnek 2: İlk örnekte istediğimiz sayıda string veri tipinde parametreyi ParamsYazdir metoduna parametre olarak gönderebildik ve hiç hata almadık ancak yine de tümünün string veri tipinde olması gerekiyordu. Bu örnekte ise C# programlama dilinde params anahtar sözcüğü ile nasıl istediğimiz sayıda ve istediğimiz veri tipinde parametreyi bir metoda gönderebileceğimize bakalım.
static void Main(string[] args)
{
ParamsYazdir(); //hiç nesne yok ki yazdırayım
ParamsYazdir("merhaba"); //merhaba
ParamsYazdir("merhaba",3); //merhaba 3
ParamsYazdir("merhaba",3, 6.54f); //merhaba 3 6.54
ParamsYazdir("lutfen",'b',"ve",'a',"olmayı",1); //lutfen b ve a olmayı 1
}
public static void ParamsYazdir (params object[] nesneler)
{
if (nesneler.Length.Equals(0))
System.Console.WriteLine("hiç nesne yok ki yazdırayım");
else
{
foreach (object nesne in nesneler)
{
System.Console.Write(nesne + " ");
}
System.Console.WriteLine("");
}
}
Not: Console.WriteLine metodunda da istediğimiz sayıda ve istediğimiz veri tipinde parametreyi kullanabiliyoruz ve çıktı alabiliyoruz. Konunun başında bahsettiğim gibi params object [] arg uygulamasının temel amacı da zaten budur.
Önceki bazı diğer benzer yazılarım için;
bkz: C# ve Generic Koleksiyonlar
bkz: SHA1 Nedir?
bkz: C# Override Nedir ve Nasıl Kullanılır?
bkz: C# Dizi Elemanlarının Toplamı Nasıl Bulunur?
bkz: C# ile String'in ortanca karakterini bulmak
bkz: C# ile iç içe while döngüsü kullanımı ve örnekleri