C# da genel kullanımda 15 adet kullanılan değişken wardır.Bunların 2 si referans türünden 13 'ü değer türünden değişkenlerdir.
C# da tüm değer ve referans türleri Object nesnesinden türemiştir.Yani C ve C++ da olduğu gibi int,Float,double,char gibi temel türler C#da Object sınıfından kalıtımla türemiştir.
iki tür değişken wardır.Referans değikenleri ve Değer değişkenleri.Referans değişkenleri C deki Pointer'ların mantığına benzer bir yapıya sahiptir.Yani içlerinde tuttukları değer Başka bir yerdeki değişkenin adresidir.Ama değer türündeki değişkenlerin tuttukları değer Stack Bölgesindeki değişkenin gerçek değeridir.
RAM da Stack ve Heap dediğimiz 2 bölge kullanımı wardır C# da.Stack dediğimiz bölgede değer türünden değişkenler tutulur.Fonksiyonları içlerine aktarılan parametre değişkenleride Stack bölgesinde tutulur.Referans tipinde değişkenler Heap Denilen bölgede tutulurlar.
Stack Bölgesi ve Heap bölgesi arasındaki fark birinde bilgilerin geçici diğerinde ise kalıcı olması diyebiliriz.new ifadesi Heap bölgesinde bellek ayırmak için kullanılır.
Değer türü değerleri , Referans türleri de adresleri barındırır.
C#da değer türlerini atama yaptığınız zaman değerleri yer değiştirir.
Örnekk
int a=10;
int b=a;
Console.WriteLine(b);
dediğimiz zaman b değişkenine a'nın 10 değeri atanır... Oysa Referans türlerinde atama yaptığınız zaman değerler değil Gösterdikleri yerlerin adresleri arasında değişiklik yaparsınız.
Referans tipleri Stringler , Diziler , Objectler , Ve Sınıflardır.
Örnekk
int[] dizi={1,2,3,4,5};
int[] yenidizi={6,7,8,9,10};
dizi=yenidizi;
gibi bir ifade kullanırsanız dizi değeri artık yenidizinin gösterdiği yeri gösterecek.
dizi[0]=20;
gibi bir ifade kullanırsanız yenidizi nin birinci elemanı olan 6 rakamı 20 değeri olacak.Yani kısaca Her iki dizide aynı bellek bölgesine hitap etmektedir.Yani yeni sıralama {20,7,8,9,10} olur.Kısaca dizi tipine uyguladığınız her değişiklik yenidizi değişkeninede uygulanacaktır.