Derinlemesine yazılım eğitimleri için kanalımı takip edebilirsiniz...

C# – Metodlarda ref ve params Kullanımı

Bu yazımda C# programlama dilinde,metodlarda kullanılan ref ve params ifadelerinin kullanımından bahsedeceğim.Metodların parametre kısımlarında kullanılan bu ifadeler belirli işlemler için tercih edilir.Gelin şimdi bunları görelim.
ref Anahtar Sözcüğü
ref anahtar sözcüğü, referansın kısaltılmış halidir.Parametrelerin referansını metoda vermek için kullanılır.

  • Metod içinde ref ile tanımlanan parametreye değer gönderilirken, değerin önüne yine ref anahtar sözcüğü konmalıdır.
  • Metod içinde ref ile tanımlı parametreye gönderilen ifadenin değeri değil,referansı gönderilir.
  • ref olmayan parametreye gönderilen ifadenin değeri gönderilir.

Şimdi aşağıdaki kod bloğunu inceleyiniz.

        private void Form1_Load(object sender, EventArgs e)
        {
            string isim = "Gençay";
            MessageBox.Show(Isim(isim) + ",isim değişkeninin değeri " + isim);
        }
        private string İsim(string isim)
        {
            isim = isim + " Yıldız";
            return isim;
        }

Yukarıdaki kod bloğunu derleyip çalıştırdığımız zaman mesaj kutusunda “Gençay Yıldız,isim değişkeninin değeri Gençay” yazacaktır.

        private void Form1_Load(object sender, EventArgs e)
        {
            string isim = "Gençay";
            MessageBox.Show(Isim_ref(ref isim) + ",isim değişkeninin değeri " + isim);
        }
        private string Isim_ref(ref string isim)
        {
            isim = isim + " Yıldız";
            return isim;
        }

Yukarıdaki kod bloğunu derleyip çalıştırdığımız zaman ise, mesaj kutusunda “Gençay Yıldız,isim değişkeninin değeri Gençay Yıldız” yazısını göreceğiz.Halbuki ben isim değişkenine “Gençay” değişkenini verdiğim halde “Gençay Yıldız” değerini veriyor.Yukarıda ref kullanmadığımız durumla,ref kullandığımız bu durumun arasındaki fark nedir? diye sorarsanız,parametre referans olarak kullanılıyor ve bir yerden bu parametre çağrılacağı zaman o parametrenin referans değeri geliyor.
params Anahtar Sözcüğü
Metod içinde params ile tanımlanan diziye, dışarıdan istenildiği sayıda eleman gönderebiliriz.

        private void Form1_Load(object sender, EventArgs e)
        {
            int toplam = Sayilar(3, 4, 5, 6, 3, 23, 2, 3);
            MessageBox.Show(toplam.ToString());
        }
        public int Sayilar(params int[] sayilar)
        {
            int toplam = 0;
            for (int i = 0; i < sayilar.Length; i++)
            {
                toplam += sayilar[i];
            }
            return toplam;
        }

Yukarıda gördüğünüz gibi parametresine params anahtar sözcüğüyle int dizisi alan Sayilar metodumuza istediğimiz kadar eleman gönderiyorum.
İstersek hiç elemanda göndermeyebiliriz.
Eğer metod birden fazla parametre alıyorsa ve bu parametrelerin içinde params anahtar sözcüğüde mevcutsa , params lı anahtar sözcük en son tanımlanmalıdır.Eğer en son parametre olarak tanımlanmazsa eğer, zaten bize hata verecektir.Örnek olarak aşağıdaki kod bloğunu inceleyiniz.

        private void Form1_Load(object sender, EventArgs e)
        {
            int toplam = Sayilar(3, 4, 5, 6, 3, 23, 2, 3);
            MessageBox.Show(toplam.ToString());
        }
        public int Sayilar(int a, int b, int c, params int[] sayilar)
        {
            int toplam = 0;
            for (int i = 0; i < sayilar.Length; i++)
            {
                toplam += sayilar[i];
            }
            return toplam;
        }

Yukarıdaki şekilde Sayilar metodumuz dört adet parametre alıyor ve bu parametrelerden birisi params anahtar sözcüklüdür.En sona yazılmıştır.Aksi halde hata verecektir.Formun loadında metodumuz cağrılırken,parametrelere verilen değerlerden sırasıyla ilk üçü , int tipindeki a,b ve c değişkenlerine gidecekler, geri kalanı ise params anahtar sözcüklü int değişkenine verilecektir.
Bir sonraki yazımda görüşmek üzere,
İyi çalışmalar…

Bunlar da hoşunuza gidebilir...

2 Cevaplar

  1. 20 Ekim 2016

    […] özelliği üzerine duruyor olacağız. Tabi bu özelliği anlamlandırabilmek için öncelikle ref keywordünün kullanımına hakim olmanız gerekmektedir. Her ne kadar ilgili linkteki makaleyi […]

  2. 26 Nisan 2018

    […] işlemler neticesinde değişken üzerindeki son değişikliği görmeyi amaçlıyorsak eğer ref parametresini […]

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir