C# - Veri Tipleri
C#' ta veri (data) tipleri 3'e ayrılmıştır.
- Değer Data Tipi - Bunlar değerlere doğrudan atama yapılabilinen data tipleridir. int, char, float vb. örnek olarak verilebilir.
- Referans Data Tipi - Bu veri türleri gerçek verilere değil değişkenlere referans içerir.
- Pointer (Gösterici) Data Tipi - Bu data tipleri başka bir veri türünün bellek adresini depolar ve verilere pointer (gösterici) kullanılarak erişmemizi sağlar.
Değer Data Tipi (Value Data Types)
Bir veri değeri, değer veri türlerine doğrudan atanabilir. Hem imzalı hem de imzasız değişmez değerler içerebilirler.
Aşağıdaki tabloda en çok kullanılan tipleri görebilirsiniz..
Data Tipi | Kapladığı Alan | Aralık | Varsayılan Değer |
---|---|---|---|
Bool | 1 byte | Doğru yada Yanlış (True or False) | False |
Byte | 1 byte | 0 ile 255 | 0 |
Short | 2 byte | -32,768 ile 32,767 | 0 |
int | 4 byte | -2,147,483,648 ile 2,147,483,647 | 0 |
long | 8 byte | -9,223,372,036,854,775,808 ile 9,223,372,036,854,775,807 | 0L |
float | 4 byte | -3.4 x 1038 ile + 3.4 x 1038 | 0.0F |
double | 8 byte | (+/-)5.0 x 10-324 ile (+/-)1.7 x 10308 | 0.0D |
decimal | 16 byte | (-7.9 x 1028 to 7.9 x 1028) / 1 ile 28 | 0.0M |
Char | 1 byte | U +0000 ile U +ffff | '\0' |
Referans Data Tipleri (Reference Data Types)
Referans veri türleri, değişkenlerde bir referans içerir, saklanan gerçek verileri içermez.
1. Nesne Tipleri (Object Types)
C#'daki her tür, doğrudan veya dolaylı olarak nesne sınıfı (object) türünden türetilir. Değer türünün nesne türüne dönüştürülmesine boxing, nesne türünün değer türüne dönüştürülmesine ise unboxing denir.
Boxing ve Unboxing örneğini gösteren bir program aşağıdaki gibidir:
using System;
class ConsolApp1
{
static void Main()
{
int deger1 = 50;
object obj = deger1; //Boxing
int deger2 = (int)obj; //Unboxing
}
}
2. Dizi Tipleri (Array Types)
Array (dizi), aynı türdeki veri türleriden oluşan bir Collection (koleksiyon) dur. Birleşik şekilde bellek konumları olarak sistemde saklanmaktadırlar. En düşük adres ilk öğeyi ve en yüksek adres son öğeyi içerir.
Dizileri gösteren bir programı aşağıda inceleyelim..
using System;
public class ConsolApp2
{
public static void Main(string[] args)
{
int[] a = new int[] {1,2,3,4};
for(int i=0;i < 4; i++)
Console.WriteLine(a[i]);
}
}
3. Metin Tipleri (String Types)
String, C#'da sıfır veya daha fazla unicode karakterden oluşan bir dizisidir. Tüm C# türleri gibi nesne türünden türetilir.
Aşağıda bir String değişkeni kullanılmış örnek gösterilmektedir..
using System;
public class ConsolApp3
{
public static void Main()
{
string ad = "Leyla";
Console.WriteLine(ad);
}
}
Gösterici Data Tipleri (Pointer Data Types)
C#'ta pointer (gösterici) veri türleri başka bir veri türünün adresini saklar. Unsafe (güvenli olmayan) bir şekilde kullanılırlar.
using System;
namespace PointerApp
{
class Ornek1
{
static unsafe void Main(string[] args)
{
int val = 100;
int* ptr = &val;
Console.WriteLine("Deger - {0} ", val);
Console.WriteLine("Deger Adresi - {0}", (int)ptr);
}
}
}
Yukarıdaki kodun çıktısı aşağıdaki gibidir:
Note: Unsafe code may only appear if you compile with /unsafe
Deger - 100
Deger Adresi - 74638937