![]()
C# programlama dilinde kullanılan veri Değer ve Referans tipler olarak iki gruba ayrılır.
Değer Tipler => “int”, “long”, “float”, “double”, “decimal”, “char”, “bool”, “byte”, “short”, “struct”, “enum”
Referans Tipler => “string”, “object”, “class”, “interface”, “array”, “delegate”, “pointer”
Bu tipler tanımlandığında geçici olarak Ram de tutulur ve Ramde de Stack ve Heap denilen alanalarda tutulurlar.
Struct tipindeki değişkenler değer tipleridir ve Stack içerisinde saklanmaktadır. class tipindeki değişkenler ise referans tipleridir ve referansları Stack’de kendisi ise Heap’de saklanır.
Aşağıdaki şemada biraz daha belirgin anlaşılacaktır.

Değer tipler Ram de kaplayacağı alanı belli olan int,double,decimal,byte.. gibi struct olan tiplerdir ve stack’de bulunurlar.
Referans tipler ise string,object,class.. gibi kendi yazdığımız custom objeler bunlar Ram’de kaplayacakları alan belli olmadığından heap‘de tutulurlar.
string neden Referans Tiptir
Referans tiplerde string name = “Deneme”; gibi bir tanımlama yaptığımızda benunu new leye biliyoruz. object o = new object(); gibi. Yani new anahtar sözcüğü kullanılıyor. Sabit değer olan “Deneme” tanımı referans tipe new anahtar sözcüğü kullanılmadan atanabiliyor yani davranış olarak değer tiplere(int,long,decimal…) benziyor ama aslında string referans tiptir, string in bu şekilde tasarlanmasının sebebi string eğer değer tipi olsaydı Stack te tutulacaktı. Stack ise sınırlı bir alana sahiptir. .Ama string değerleri bu alanları aşabilmektedir. Bu yüzden string referans tiptir ve bu değer Heap te tutulmuştur. Yani bu sebeple referans tiptir denebilir.
Bir sonraki makalede görüşmek üzere sağlıcakla kalın..








Bir yanıt yazın