Değişkenler ve Veri Tipleri

C# dilinde değişkenler, programın çalışma süresi boyunca veri depolamak için kullanılan alanlardır. Değişkenler belirli bir veri tipine sahiptir ve bu tip belirlenen değişkene hangi türde veri atanabileceğini belirler.

1. Değişken Tanımlama ve Kullanımı

C#’ta bir değişken tanımlarken önce veri tipini, ardından değişken adını yazarız. Eğer istersek başlangıç değeri de verebiliriz.

veri_tipi değişken_adı = değer;
Genel Söz Dizimi
int yas = 25;              // Tam sayı değişkeni
double pi = 3.14159;       // Ondalıklı sayı değişkeni
char harf = 'A';           // Tek karakter değişkeni
bool aktifMi = true;       // Boolean (doğru/yanlış) değişkeni
string ad = "Ahmet";       // Metin değişkeni
Örnekler

2. Temel Veri Tipleri

C#’ta değişkenler iki ana kategoriye ayrılır:

  1. Değer Tipleri (Value Types)
  2. Referans Tipleri (Reference Types)

2.1. Değer Tipleri (Value Types)

Bellekte stack alanında saklanan sabit boyutlu değişkenlerdir. Değerin kendisini taşır.

Veri TipiAçıklamaBellekte Kapladığı Alan
byte0 ile 255 arasında bir sayı1 byte
short-32,768 ile 32,7672 byte
int-2,147,483,648 ile 2,147,483,6474 byte
longÇok büyük tam sayılar8 byte
floatOndalıklı sayı (7 basamak)4 byte
doubleOndalıklı sayı (15-16 basamak)8 byte
decimalFinansal hesaplamalar (28-29 basamak)16 byte
charTek bir karakter2 byte (Unicode)
booltrue veya false1 byte
int sayi = 100;
double pi = 3.14;
bool dogruMu = false;
char sembol = 'X';
C#

Not: decimal veri tipi genellikle parasal işlemler ve hassas hesaplamalar için kullanılır.

decimal fiyat = 199.99m; // Sonuna 'm' eklenmelidir.
C#

2.2. Referans Tipleri (Reference Types)

Bellekte heap alanında saklanır ve değişken sadece referans adresini taşır.

Veri TipiAçıklama
stringMetin ifadeleri tutar
objectHerhangi bir veri türünü tutabilir
arrayDiziler
classSınıflar
string isim = "Mehmet";  // Metin tutar
object veri = 42;        // Her türlü veri tutabilir
int[] sayilar = {1, 2, 3};  // Dizi
C#

3. Değişken Türleri ve Kapsamları

Değişkenlerin tanımlandıkları alan (scope), ne kadar süreyle bellekte kalacaklarını ve nereden erişilebileceğini belirler.

3.1. Yerel (Local) Değişkenler

Bir metodun veya bloğun içinde tanımlanır ve sadece o kapsamda geçerlidir.

void OrnekMetod()
{
    int yas = 30; // Sadece bu metod içinde geçerli
}
C#

3.2. Üye (Instance) Değişkenler

Bir sınıf içinde tanımlanır ve sınıfın bir nesnesi (instance) oluşturulduğunda bellekte yer alır.

class Kisi
{
    public string Ad;  // Sınıfın üyesi
    public int Yas;
}
C#

3.3. Statik (Static) Değişkenler

Bir sınıfa ait olup tüm nesneler tarafından paylaşılır. Sınıf oluşturulmadan kullanılabilir.

class Ogrenci
{
    public static int OgrenciSayisi = 0;
}
C#

4. Varsayılan Değerler

Bir değişken tanımlanır ancak bir değer atanmazsa, varsayılan bir değer alır:

Veri TipiVarsayılan Değer
int0
double0.0
boolfalse
char'\0' (boş karakter)
stringnull
objectnull
int x;      // Varsayılan olarak 0 olur
bool durum; // Varsayılan olarak false olur
C#

Not: string ve object gibi referans tipleri null değer alır.

5. Nullable Değişkenler

Nullable boş değer alabilen demektir. Bazı değer tipleri nullable (null olabilir) hale getirilebilir.

int? yas = null;
bool? aktifMi = null;
C#

Eğer değişken null ise, varsayılan bir değer döndürmek için ?? operatörü kullanılabilir:

int? deger = null;
int sonuc = deger ?? 10; // Eğer 'deger' null ise 10 kullanılır.
Console.WriteLine(sonuc); // Çıktı: 10
C#

6. var, dynamic ve object Farkları

C#’ta var, dynamic ve object anahtar kelimeleri veri tipi belirleme açısından farklı özelliklere sahiptir:

Anahtar KelimeDerleme ZamanıÇalışma ZamanıKullanım Alanı
varDerleme zamanında belirlenirSonradan değiştirilemezYerel değişkenlerde
dynamicDerleme zamanında bilinmezÇalışma zamanında belirlenirEsnek değişkenlerde
objectTüm türleri saklayabilirTürü belirlemek için unboxing gerekirGenel amaçlı değişkenlerde
var sayi = 10;  // Türü derleme zamanında belirlenir (int)
dynamic veri = 20; // Türü çalışma zamanında değiştirilebilir
object nesne = "Merhaba"; // Boxing gerektirir
C#

7. Sabitler ve Readonly Değişkenler

Bazı değişkenlerin değeri değiştirilemez:

7.1. const (Sabit Değerler)

Bir kere atanır, sonradan değiştirilemez.

const double PI = 3.14159;
C#

7.2. readonly (Yalnızca Okunabilir)

Sadece constructor içinde atanabilir, sonradan değiştirilemez.

class Araba
{
    public readonly string Marka;
    
    public Araba(string marka)
    {
        Marka = marka; // Constructor içinde atanabilir.
    }
}
C#