Enum’lar
C#’ta Enum’lar, sabit değerler kümesini anlamlı isimlerle temsil etmenizi sağlayan özel veri tipleridir. Enum’lar, kod okunabilirliğini artırır ve “magic number” veya sabit değer kullanımını önleyerek hata olasılığını azaltır. Özellikle durum yönetimi, kategori sınıflandırması, erişim seviyeleri veya haftanın günleri gibi sabit değerli veri setlerinde sıklıkla kullanılır.
Enum’lar, enum anahtar kelimesi ile tanımlanır ve varsayılan olarak her bir öğe sıfırdan başlayarak ardışık tamsayı değerleri alır. İhtiyaca göre bu değerler manuel olarak atanabilir veya alt tipleri (byte, short, long) değiştirilebilir; bu da bellek optimizasyonu sağlar. Enum’lar, nesne yönelimli programlama (OOP) ilkeleri ile kolayca bütünleşir ve sınıflar, yapılar, metotlar ve kontrol yapıları içinde güvenle kullanılabilir.
Bu eğitimde, Enum tanımlama, başlatma ve kullanma yöntemlerini öğrenecek; int ve Enum dönüşümlerini, koşul ve döngülerde Enum kullanımını göreceksiniz. Ayrıca, gerçek dünya senaryolarında Enum’ların nasıl uygulanacağını, en iyi uygulamaları ve performans optimizasyonlarını öğreneceksiniz. Bu bilgilerle, C# projelerinde Enum’ları verimli ve güvenli bir şekilde kullanabilecek ve kodunuzun okunabilirliğini, bakımını ve performansını artırabileceksiniz.
Temel Örnek
textusing System;
namespace EnumOrnek
{
class Program
{
enum HaftaninGunleri
{
Pazar,
Pazartesi,
Sali,
Carsamba,
Persembe,
Cuma,
Cumartesi
}
static void Main(string[] args)
{
HaftaninGunleri bugun = HaftaninGunleri.Carsamba;
Console.WriteLine("Bugün: " + bugun);
if (bugun == HaftaninGunleri.Carsamba)
{
Console.WriteLine("Haftanın ortası!");
}
int gunNumarasi = (int)bugun;
Console.WriteLine("Günün numarası: " + gunNumarasi);
HaftaninGunleri baskaGun = (HaftaninGunleri)5;
Console.WriteLine("5. gün: " + baskaGun);
}
}
}
Bu temel örnekte HaftaninGunleri adlı bir enum tanımlanmıştır. Enum değişkeni başlatılmış, if koşulunda kullanılmış ve Enum ile int arasında dönüşüm gösterilmiştir. Enum’dan int’e dönüşüm, veritabanı işlemleri veya hesaplamalar için önemlidir. Int’den Enum’a dönüşüm, sayısal değerlerden durum oluşturmayı sağlar. Enum kullanımı kodun okunabilirliğini artırır, bakımını kolaylaştırır ve OOP ile uyumlu hale getirir.
Pratik Örnek
textusing System;
namespace EnumPratikOrnek
{
enum SiparisDurumu : byte
{
Beklemede = 1,
Islemde = 2,
Gonderildi = 3,
TeslimEdildi = 4,
Iptal = 5
}
class Siparis
{
public int Id { get; set; }
public string Musteri { get; set; }
public SiparisDurumu Durum { get; set; }
public void DurumGoster()
{
switch (Durum)
{
case SiparisDurumu.Beklemede:
Console.WriteLine("Sipariş beklemede.");
break;
case SiparisDurumu.Islemde:
Console.WriteLine("Sipariş işleniyor.");
break;
case SiparisDurumu.Gonderildi:
Console.WriteLine("Sipariş gönderildi.");
break;
case SiparisDurumu.TeslimEdildi:
Console.WriteLine("Sipariş teslim edildi.");
break;
case SiparisDurumu.Iptal:
Console.WriteLine("Sipariş iptal edildi.");
break;
default:
Console.WriteLine("Bilinmeyen durum.");
break;
}
}
}
class Program
{
static void Main(string[] args)
{
Siparis s1 = new Siparis { Id = 101, Musteri = "Ayşe", Durum = SiparisDurumu.Islemde };
Siparis s2 = new Siparis { Id = 102, Musteri = "Mehmet", Durum = SiparisDurumu.Gonderildi };
s1.DurumGoster();
s2.DurumGoster();
}
}
}
Bu pratik örnekte SiparisDurumu enum’u byte tipinde tanımlanarak bellek optimizasyonu sağlanmıştır. Siparis sınıfı, Id, Musteri ve Durum özelliklerine sahiptir. DurumGoster metodu, switch ile Enum değerine bağlı olarak işlem yapar. Enum kullanımı, kodun okunabilirliğini, bakımını ve veri tutarlılığını artırır. OOP ile bütünleşir ve gerçek dünya senaryolarında durumu yönetmek için idealdir. Default kullanımı, tüm olası durumları kapsayarak hata olasılığını azaltır.
C#’ta Enum kullanırken, açıklayıcı isimler seçmek, uygun alt tipi belirlemek ve dönüşümlerde güvenliği sağlamak en iyi uygulamalardandır. Yaygın hatalar arasında “magic number” kullanımı, eksik switch case veya default olmaması bulunur. Performans için küçük tipler, gereksiz dönüşümlerden kaçınmak önemlidir. Enum.TryParse metodu, güvenli dönüşümler için idealdir. Enum’lar tip güvenliği sağlar ve kodun anlaşılabilirliğini artırır.
📊 Referans Tablosu
C# Element/Concept | Description | Usage Example |
---|---|---|
enum | Sabit değerler kümesi tanımlar | enum HaftaninGunleri {Pazar, Pazartesi, Sali} |
Casting | Enum ve int arasında dönüşüm | int gun = (int)HaftaninGunleri.Pazartesi; HaftaninGunleri gun2 = (HaftaninGunleri)1 |
Underlying Type | Bellek optimizasyonu için alt tip seçimi | enum SiparisDurumu : byte {Beklemede = 1, Islemde = 2} |
Switch Statement | Enum’a bağlı mantık uygulanması | switch(durum){ case SiparisDurumu.Beklemede: ...} |
Class Integration | Enum’ı sınıf özelliği olarak kullanma | class Siparis { public SiparisDurumu Durum {get; set;} } |
Enum’lar, C#’ta güvenli, okunabilir ve sürdürülebilir kod yazmayı sağlar. Durum yönetimi, kategori sınıflandırması ve iş mantığını düzenler. Sonraki adım olarak Attributes ve Generics ile kombinasyonları inceleyebilir, State pattern gibi tasarım kalıplarında Enum kullanımını öğrenebilirsiniz. Pratik uygulamalar ve dokümantasyon, Enum’ları ileri düzeyde kullanmanıza yardımcı olur.
🧠 Bilginizi Test Edin
Bilginizi Test Edin
Bu konudaki anlayışınızı pratik sorularla test edin.
📝 Talimatlar
- Her soruyu dikkatle okuyun
- Her soru için en iyi cevabı seçin
- Quiz'i istediğiniz kadar tekrar alabilirsiniz
- İlerlemeniz üstte gösterilecek