Değer Tip vs. Referans Tip
14 Mar 2010C# dilinde değişkenler Değer Tip(Value Type) ve Referans Tip(Reference Type) ikiye ayrılır, bunlardan özellikleriyle bahsedelim;
Değer Tipleri:
- Verilerini doğrudan kendi üzerinde saklarlar.
- Her bir değişken, verisinin bir kopyasını taşır.
- Bir değişken üzerinde yapılan değişiklik diğerini etkilemez.
- Veri, belleğin stack bölgesinde tutulur.
- Tanımlamak veri tipi ve değişken adı yeterlidir.
- Null (boş) değer alamazlar.
Referans Tipleri:
- Verilerinin adreslerini (referanslarını) saklarlar.
- İki referans değişkeni aynı veriyi işaret edebilir.
- İki değişkenin birbirine eşitlenmesi sonrası, bir değişken üzerinde yapılan değişiklik diğerini etkileyebilir.
- Veri belleğin Heap bölgesinde tutulurken; verinin heap bölgesindeki adresini tutan değişken stack bölgesinde tutulur.
- Değer tiplerine ek olarak “new” anahtar kelimesiyle oluştururlurlar.
- Null değer alabilirler. Referans değişkeninin ‘null’ değer alması, işaret edeceği bir nesnenin olmaması anlamına gelir.
Aşağıdaki şekilde C# tipleri ve alacağı maximum ve minimum değerleri verilmiştir. Toplam olarak 15 veri tipi vardır bunlardan 13’ü değer 2’si referans tiplidir.
Değer Tipleri
C# Adı | CTS Karşılığı | Açıklama | Max ve Min aralık yada değeri |
sbyte | System.Byte | 8 bit işaretli tamsayı | -128 : 127 |
short | System.Int16 | 16 bit işaretli tamsayı | -32.768 : 32.767 |
int | System.Int32 | 32 bit işaretli tamsayı | -2.147.483.648 : 2.147.483.647 |
long | System.Int64 | 64 bit işaretli tamsayı | -9.223.372.036.854.775.808 : -9.223.372.036.854.775.807 |
byte | System.Byte | 8 bit işaretsiz tamsayı | 0,177083333 |
ushort | System.UInt16 | 16 bit işaretsiz tamsayı | 0 : 65.535 |
uint | System.UInt32 | 32 bit işaretsiz tamsayı | 0 : 4.294.967.295 |
ulong | System.UInt64 | 64 bit işaretsiz tamsayı | 0 : 18.446.744.073.709.551.615 |
float | System.Single | 32 bit tek kayan sayı | +yada - 1,5*10-45 : + ya da - 3,4*1038 |
double | Sytem.Double | 64 bit çift kayan sayı | +yada - 5*10-324 : + ya da - 1,7*10308 |
decimal | System.Decimal | 128 bit ondalıklı sayı | +yada - 1,5*10-28 : + ya da - 7,9*1028 |
bool | System.Boolean | true ya da false | |
char | System.Char | Karakterleri temsil eder | 16 Unicode karakterleri |
Referans Tipleri
C# Adı | CTS Karşılığı | Açıklama |
object | System.Object | Bütün veri türlerinin türediği kök eleman |
string | System.String | Unicode karakterlerinden oluşan string |
Aşağıda örnek olarak Int ve Double değişkenlerinin min. ve max değerlerini inceledik..
Console.WriteLine("Int degiskenin Min Degeri :" + int.MinValue.ToString());
Console.WriteLine("Int degiskenin Max Degeri :" + int.MaxValue.ToString());
Console.WriteLine("Double degiskenin Min Degeri :" + double.MinValue.ToString());
Console.WriteLine("Double degiskenin Max Degeri :" + double.MaxValue.ToString());