20 Mayıs 2015

C# ref kullanımı.

     Referansı anlamak için önce aşağıdaki örneklerimizi inceleyelim.

Bir konsol uygulaması açalım ve aşağıdaki metodumuzu tanımlayalım.
static void Foo(int p)
        {
            p = p + 1;
            Console.WriteLine(p);
        }
Bu metod aldığı p değerini 1 arttırarak ekrana yazacaktır.
Şimdi aşağıdaki programı yazalım.
            int x = 8;//8
            Foo(x);//9
            Console.WriteLine(x);//8
 Programı çalıştırdığımızda dikkat edersek ışarıdan aldığımız x değeri üzerinde herhangi bir değişiklik olmamıştır.
Peki metodumuzun gönderdiğimiz değişken üzerinde değişiklik yapmasını istiyorsak ne yapmalıyız.
İşte burada "ref" yapılandırıcısı devreye giriyor.

Eğer metodumuzu
static void Foo (ref int p)
{
p = p + 1;
Console.WriteLine (p);
}
şeklinde tanımlarsak.Metodumuza girdinin dışarıdan referanıs alınacağını belirtmiş oluruz.
Aşağıdaki şekilde de programımızı yazarsak sonucu görebiliriz.
 int x = 8;
Foo (ref x); // 9
Console.WriteLine (x); // 9
Dikkat ederseniz fonksiyonumuzu gönderirken de referans olduğunu belirtiyoruz.Ayrıca artık x değişkenimizde değişmiş durumdadır.