Yükleniyor...

C# Temel Veri Tipleri

C#’ta temel veri tipleri: sayısal, metinsel, mantıksal, nesne tabanlı ve nullable tiplerin kullanımı.

C#’ta veriler, farklı türler altında saklanır ve her veri tipi bellekte kapladığı alanı ve uygulanabilecek işlemleri belirler. Bu yapı, programın nasıl çalışacağını doğrudan etkiler. Bu yazıda sayısal, metinsel, mantıksal, dinamik ve nullable veri tiplerini örneklerle inceleyeceğiz.

Veri tiplerini bilinçli seçmek, C# öğrenme sürecinin en önemli adımlarından biridir. Doğru tip kullanımı, performans sorunlarını azaltır, bellek yönetimini iyileştirir ve olası hataların önüne geçer. Bu nedenle temel veri tiplerini iyi kavramak, ileride geliştirilecek tüm uygulamalar için sağlam bir temel oluşturur.


Sayısal Tipler

Sayısal tipler tam sayılar ve ondalıklı sayılar için kullanılır. Finansal işlemler için decimal tercih edilmelidir.

Tip Açıklama Örnek Değer Bellek
int Tam sayı (yaklaşık −2 milyar - +2 milyar) 42 4 byte
long Daha büyük tam sayılar 100000000 8 byte
short Küçük tam sayılar 120 2 byte
byte 0 - 255 arası pozitif değer 200 1 byte
double Ondalıklı sayı (çift hassasiyet) 3.14 8 byte
float Ondalıklı sayı (tek hassasiyet) 2.5f 4 byte
decimal Finansal işlemler için ondalık 19.99m 16 byte

Örnek:


int yas = 25;
double pi = 3.14159;
decimal fiyat = 19.99m;

Console.WriteLine(yas);
Console.WriteLine(pi);
Console.WriteLine(fiyat);

Not: Para ile ilgili hesaplamalarda double yerine decimal kullanılması önerilir. decimal, kayan nokta kaynaklı yuvarlama hatalarını azaltarak daha doğru sonuçlar üretir.


Metinsel Tipler

Metin temsilinde char tek bir karakteri, string ise karakter dizilerini yani metinleri tutar.

Tip Açıklama Örnek Değer
char Tek karakter 'A', '9', '*'
string Karakter dizisi (yazı) "Merhaba Dünya"

Örnek:


char ilkHarf = 'M';
string mesaj = "Merhaba";

Console.WriteLine(ilkHarf);  // M
Console.WriteLine(mesaj);    // Merhaba

Mantıksal Tip

bool yalnızca true veya false değerini alır. Koşullarda, karşılaştırmalarda sıkça kullanılır.

Tip Açıklama Örnek
bool Mantıksal (doğru/yanlış) true

Örnek:


bool ogrenciMi = true;
bool mezunMu = false;

Console.WriteLine(ogrenciMi); // true
Console.WriteLine(mezunMu);   // false

Nesne ve Dinamik Tipler

Esneklik ve genel amaçlı kullanım için object, var ve dynamic tipleri bulunur.

Tip Açıklama Örnek
object Tüm türlerin temel sınıfı; her türden değer alabilir
var Tür çıkarımı (derleyici otomatik belirler) var sayi = 10;
dynamic Türü çalışma anında belirlenir; esnek ama hataya açık dynamic x = "test";

Örnek:


object veri = 42;         // int de olabilir
var mesaj = "Merhaba";    // derleyici string çıkarır
dynamic degisken = 5;
degisken = "Sonradan string oldu";

Console.WriteLine(veri);
Console.WriteLine(mesaj);
Console.WriteLine(degisken);

Nullable Tipler

Değer tipleri (ör. int, double, bool) varsayılan olarak null olamaz. Ancak ? ekleyerek nullable hale getirilebilir. Bu sayede “değer yok” durumunu da taşıyabilirler.

Örnek:


int? not = null;

if (not == null)
    Console.WriteLine("Not girilmedi.");
else
    Console.WriteLine($"Not: {not}");

Hangi Veri Tipi Ne Zaman Kullanılmalı?


Veri Tipleri Arası Atamalar ve Tür Dönüşümleri

C#’ta farklı veri tiplerindeki değişkenler her zaman birbirine doğrudan atanamaz. Uyumlu olmayan tipler arasında atama yapılmaya çalışıldığında derleme zamanı hatası oluşur.

Hata Veren Atamalar


int sayi = 10;
string metin = sayi; // HATA

bool durum = true;
int deger = durum;  // HATA

Yukarıdaki örneklerde, veri tipleri birbiriyle uyumlu olmadığı için atama işlemi başarısız olur.

Tür dönüşümü syntax hatası

Yukarıdaki görselde, Visual Studio farklı veri tipleri arasında yapılan uyumsuz atamaları anında tespit eder. Örnekte bool ve int gibi birbiriyle uyumlu olmayan türlerin doğrudan atanmaya çalışıldığı görülmektedir. Editör, bu durumu kırmızı dalgalı çizgiyle işaretler ve CS0029 gibi bir derleme zamanı hatası gösterir.

Otomatik (Implicit) Dönüşümler


int kucuk = 5;
double buyuk = kucuk; // Sorunsuz

Küçük kapasiteli sayısal tipler, daha büyük kapasiteli tiplere otomatik olarak dönüştürülebilir.

Açık (Explicit) Dönüşümler


double pi = 3.14;
int tamSayi = (int)pi; // 3

Büyük veya hassas veri kaybı ihtimali olan dönüşümler için açık tür dönüşümü gerekir.


Özet