Enum Yapısı: Numaralandırılmış Tipler ile Okunabilir Kod Yazımı

crazy_coder

Moderatör
Katılım
20 Şub 2026
Mesajlar
204
Tepkime puanı
0
Puanları
16

C# Enum Yapısı: Kodunuzu Anlamlı Kılın ve Hataları Sıfırlayın​


Yazılım geliştirirken bazı verilerin alabileceği değerler sabittir. Haftanın günleri, sipariş durumları veya kullanıcı yetkileri gibi... Bu durumları 0, 1, 2 gibi sayılarla ifade etmek yerine, Enum kullanarak kodumuza bir isim ve kimlik kazandırırız.



1. Enum Nedir? Neden Kullanılır?​


Enum, "Enumeration" (Numaralandırma) kelimesinin kısaltmasıdır. Temelde bir tam sayı grubuna anlamlı isimler vermenizi sağlayan özel bir değer tipidir.

Neden Enum Kullanmalıyız?

  • []Okunabilirlik: if (durum == 2) yerine if (durum == SiparisDurum.Kargoda) yazmak çok daha anlaşılırdır.
    []Tip Güvenliği (Type Safety): Yanlışlıkla sisteme tanımlanmamış bir değer girilmesini engeller.
  • Kolay Bakım: Bir değeri güncellemek istediğinizde tüm kodu değil, sadece Enum tanımını değiştirmeniz yeterlidir.



2. Enum Tanımlama ve Kullanma​


Enum'lar genellikle class dışında veya ayrı bir dosyada tanımlanır. Varsayılan olarak ilk eleman 0 değerini alır ve birer birer artarak devam eder.

C#:
public enum SiparisDurum
{
Hazirlaniyor, // 0
Onaylandi,    // 1
Kargoda,      // 2
TeslimEdildi, // 3
IptalEdildi   // 4
}

// Kullanımı:
SiparisDurum mevcutDurum = SiparisDurum.Hazirlaniyor;

if (mevcutDurum == SiparisDurum.Hazirlaniyor)
{
Console.WriteLine("Siparişiniz şu an hazırlanıyor.");
}



3. Değer Atama ve Tip Dönüşümleri​


Enum elemanlarına isterseniz manuel olarak sayısal değerler atayabilirsiniz. Ayrıca Enum'lar aslında birer sayı olduğu için onları int tipine (veya tersine) dönüştürebilirsiniz.

C#:
public enum HataKodlari
{
NotFound = 404,
BadRequest = 400,
InternalServerError = 500
}

// Enum -> int dönüşümü
int kod = (int)HataKodlari.NotFound; // 404

// int -> Enum dönüşümü
HataKodlari hata = (HataKodlari)500; // InternalServerError



4. Switch-Case ile Enum Kullanımı (En İyi İkili)​


Enum'lar, switch-case yapıları için biçilmiş kaftandır. Visual Studio'da switch yazıp Enum değişkenini içine koyduktan sonra iki kez TAB tuşuna basarsanız, tüm durumlar otomatik olarak oluşturulur.

C#:
SiparisDurum durum = SiparisDurum.Kargoda;

switch (durum)
{
case SiparisDurum.Hazirlaniyor:
// İşlemler
break;
case SiparisDurum.Kargoda:
Console.WriteLine("Takip numaranız oluşturuldu.");
break;
default:
break;
}



5. [Flags] Niteliği: Birden Fazla Değeri Aynı Anda Seçmek​


Bazen bir değişkenin birden fazla Enum değerini aynı anda taşımasını isteyebilirsiniz (Örneğin bir kullanıcının hem "Yazar" hem "Editör" yetkisine sahip olması). Bunun için ikilik (binary) sayı sistemini ve [Flags] niteliğini kullanırız.

C#:
[Flags]
public enum Yetkiler
{
None = 0,
Okuma = 1,    // 2^0
Yazma = 2,    // 2^1
Silme = 4,    // 2^2
Yönetici = 8  // 2^3
}

Yetkiler kullaniciYetkisi = Yetkiler.Okuma | Yetkiler.Yazma; // Hem okuma hem yazma yetkisi



Sonuç​


Enum kullanımı, kodunuzun kalitesini bir üst seviyeye taşır. "Sihirli sayılardan" kaçınmak, hata payını düşürür ve projenin dökümantasyon gereksinimini azaltır. Eğer bir değişkenin alacağı değerler kümesi belliyse, orada mutlaka Enum kullanmayı düşünmelisiniz.
 
Geri
Üst