24 Ekim 2011 Pazartesi

C# params Anahtar Sözcüğü

Metotları tasarımlarında, yalnızca dizi parametreleri için kullanılabilen bir anahtar sözcüktür. Kullanım amacı, parametre olarak bizden dizi bekleyen metotları kullanırken, bir dizi tanımlayıp parametre geçmek yerine, dizinin elemanlarını virgül ile verebilmemizi sağlar. Bir örnek üzerinden nasıl yapıldığını incleyelim.

Elimizde bir integer dizisi olsun. Dizi içerisindeki en büyük elemanı bulan bir metot yazarak kullanmaya çalışalım.

class Program

    {

        static void Main(string[] args)

        {

            int[] sayilar = { 10, 2, 33, 24, 57, 16, 71, 68, 29 };

 

            int enBuyukSayi = EnBuyuk(sayilar);

 

            Console.WriteLine(enBuyukSayi);

        }

 

        static int EnBuyuk(int[] dizi)

        {

            int enBuyuk = 0;

            foreach (int sayi in dizi)

            {

                if (sayi > enBuyuk)

                    enBuyuk = sayi;

            }

            return enBuyuk;

        }

    }

Örnekte de görüldüğü gibi, metodu kullanırken parametre geçmek için bir dizi tanımlamamız gerekmektedir. Ekstra bir değişkene almak yerine,

int enBuyukSayi = EnBuyuk(new int[] { 10, 2, 33, 24, 57, 16, 71, 68, 29 });

şeklinde de yapabilirdik. params anahtar sözcüğü kullanarak, dizi tanımlamak yerine, direkt olarak elemanları yollama şansına sahibiz. EnBuyuk adlı metodun kodlarını aşağıdaki gibi değiştirelim.

static int EnBuyuk(params int[] dizi)

        {

            int enBuyuk = 0;

            foreach (int sayi in dizi)

            {

                if (sayi > enBuyuk)

                    enBuyuk = sayi;

            }

            return enBuyuk;

        }

Artık dizi elemanlarının kendilerini metoda parametre olarak verebiliriz.

static void Main(string[] args)

        {

            int enBuyukSayi = EnBuyuk( 10, 2, 33, 24, 57, 16, 71, 68, 29 );

 

            Console.WriteLine(enBuyukSayi);

        }

NOT: params anahtar sözcüğü kullanılan parametrelerde elemanların kendilerini verebildiğimiz gibi, bir dizi de verebiliriz.

Bu kullanıma neden ihtiyaç duyduğumuzun en güzel örneklerinden biri Console sınıfının WriteLine metodudur. 15. kullanımına baktığımız takdirde aşağıdaki gibi bir görüntü ile karşılaşacağız.

Untitled

Bu kullanım sayesinde, bir string metin içerisinde place holder’lar ile belirttiğimiz yerlere, gerekli değerleri direkt olarak virgüllerle gönderebilme şansına sahibiz.

static void Main(string[] args)

    {

        int enBuyukSayi1 = EnBuyuk(10, 2, 33, 24, 57, 16, 71, 68, 29);

 

        int enBuyukSayi2 = EnBuyuk(123, 6, 27, 73, 83, 216, 85, 34);

 

        Console.WriteLine("1.Değer = {0} , 2.Değer = {1} , 3.Değer= {2}", enBuyukSayi1, enBuyukSayi2, DateTime.Now.ToShortDateString());

 

    }

Gördüğünüz gibi, metinsel ifadeden sonra virgüller ile parametreleri verebildik. params anahtar sözcüğü kullanılmasaydı kendimiz bir object dizisi oluşturup elemanları bu dizi içerisine atamalı ve sonrasında da parametre olarak vermeliydik.

Ekran çıktısı aşağıdaki gibi olacaktır.

image



0 yorum:

Yorum Gönder