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 Dizimiint 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Örnekler2. Temel Veri Tipleri
C#’ta değişkenler iki ana kategoriye ayrılır:
- Değer Tipleri (Value Types)
- 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 Tipi | Açıklama | Bellekte Kapladığı Alan |
|---|---|---|
byte | 0 ile 255 arasında bir sayı | 1 byte |
short | -32,768 ile 32,767 | 2 byte |
int | -2,147,483,648 ile 2,147,483,647 | 4 byte |
long | Çok büyük tam sayılar | 8 byte |
float | Ondalıklı sayı (7 basamak) | 4 byte |
double | Ondalıklı sayı (15-16 basamak) | 8 byte |
decimal | Finansal hesaplamalar (28-29 basamak) | 16 byte |
char | Tek bir karakter | 2 byte (Unicode) |
bool | true veya false | 1 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 Tipi | Açıklama |
|---|---|
string | Metin ifadeleri tutar |
object | Herhangi bir veri türünü tutabilir |
array | Diziler |
class | Sınıflar |
string isim = "Mehmet"; // Metin tutar
object veri = 42; // Her türlü veri tutabilir
int[] sayilar = {1, 2, 3}; // DiziC#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 Tipi | Varsayılan Değer |
|---|---|
int | 0 |
double | 0.0 |
bool | false |
char | '\0' (boş karakter) |
string | null |
object | null |
int x; // Varsayılan olarak 0 olur
bool durum; // Varsayılan olarak false olurC#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ı: 10C#6. var, dynamic ve object Farkları
C#’ta var, dynamic ve object anahtar kelimeleri veri tipi belirleme açısından farklı özelliklere sahiptir:
| Anahtar Kelime | Derleme Zamanı | Çalışma Zamanı | Kullanım Alanı |
|---|---|---|---|
var | Derleme zamanında belirlenir | Sonradan değiştirilemez | Yerel değişkenlerde |
dynamic | Derleme zamanında bilinmez | Çalışma zamanında belirlenir | Esnek değişkenlerde |
object | Tüm türleri saklayabilir | Türü belirlemek için unboxing gerekir | Genel 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 gerektirirC#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#