Bir konsol uygulaması açalım ve aşağıdaki metodumuzu tanımlayalım.
static void Foo(int p)Bu metod aldığı p değerini 1 arttırarak ekrana yazacaktır.
{
p = p + 1;
Console.WriteLine(p);
}
Şimdi aşağıdaki programı yazalım.
int x = 8;//8Programı çalıştırdığımızda dikkat edersek ışarıdan aldığımız x değeri üzerinde herhangi bir değişiklik olmamıştır.
Foo(x);//9
Console.WriteLine(x);//8
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;Dikkat ederseniz fonksiyonumuzu gönderirken de referans olduğunu belirtiyoruz.Ayrıca artık x değişkenimizde değişmiş durumdadır.
Foo (ref x); // 9
Console.WriteLine (x); // 9