C# DERS 20: REF VE OUT

Referans türleri metotlara aktarılırken bit bit kopyalanmazlar.
Yani metoda aktarılan sadece bir referanstır.
Metodun içerisinde bu referans ile direkt işlem yapmak nesnenin değerini
değiştirebilir. int türünden bir nesneyi bir metoda parametre olarak geçirip
metodun içerisinde bu parametreyi değiştirmek ana değişkeni değiştirmez.
Varsayılan değer olarak bütün değer tipleri metotlara değer olarak referans
tipleri ise referans olarak aktarılır. Ancak bazı durumlarda değer tiplerini
referans olarak aktarmak isterseniz. Ref ve Out anahtar sözcüklerini kullanabilirsiniz.

Ref ve Out farkı ise Ref kullanırken ilk değer ataması zorunludur. Out’ ta değildir.

using System;
class Program
{
static void DegerTipi(int Deger)
{
Deger = 50;
}
static void Main()
{
int a = 10;
Console.WriteLine(a);
DegerTipi(a);
Console.WriteLine(a);
//Parametre olarak gönderilen a değişkenini metot içinde değiştirmek
//orjinal değişkenini değiştirmemiştir.Çünkü a değişkeninin parametre
//olarak aktarılan bir kopyası çıkartılmıştır.
Console.ReadLine();
}
}

//Peki nasıl düzeltebiliriz? İşte böyle

class Program
{
static void DegerTipi(ref int Deger)
{
Deger = 50;
}
static void Main()
{
int a = 10;
Console.WriteLine(a);
DegerTipi(ref a);
Console.WriteLine(a);
Console.ReadLine();
}
}