Değer Tipler: Integer, double, float, bool
Referans Tipler: Interface, Abstract Class , String, Array
Eğer n1 değer bir tipe, ref keywordü ile bir atama yapılırsa , artık bundan sonraki tüm işlemlerde bu atanan değer dödürülür.
static void Main(string[] args) { int number1 = 10; number1 = 30; NormType(number1); // Sonuç 30 RefType(ref number1); // Sonuç 100 NormType(number1); // n1 değeri ref ile artık değişmiştir: Sonuç 100 Console.ReadLine(); void NormType(int _number1) { Console.WriteLine("Nor Değer Nm1: {0}", number1); } void RefType(ref int _number1) { number1 = 100; Console.WriteLine("Ref Değer Nm1: {0}", number1); } }
Referans tiplerde ise c2 fereans tip c1 referans tipine eşitlenirse c2'nin bellekte tutulan değerleri artık kullanılmadığı için bir müddet sonra Garbage collector tarafından silinir.
static void Main(string[] args) { string[] cities1 = new string[] { "Ankara,Adana,Ağrı" }; string[] cities2 = new string[] { "Bursa,Bolu,Balıkesir" }; // GC siler cities2 = cities1; cities1[0] = "istanbul,Bartın,Antalya"; foreach (var item in cities2) { Console.WriteLine(item); // Sonuç "istanbul,Bartın,Antalya" } Console.ReadLine(); }