Veysel Uğur KIZMAZ

C# Enum Tanımlama

02.05.2012Okunma Sayısı: 28936Kategori: C#.Net

 C# içerisinde önemli bir yere sahip olan Enum tanımlaması, kimi zaman kodların daha kolay okunmasını sağlarken çoğunlukla hata yapma ihtimalini azaltmak amacıyla kullanılmaktadır. Peki enum nedir ve hata yapma ihtimalini nasıl azaltır?

.Net framework üzerinde hazır enum tanımlamaları olduğu gibi kullanıcı tanımlı enumlar da olabilir. Örneğin haftanın günleri için framework üzerinde hazır DayOfWeek isminde bir enum bulunmaktadır.
DayOfWeek enumunun değerlerine göz attığımızda ise Pazar gününe 0 değerinin verildiğini ve sonraki her güne 1’er artırarak değerler verildiğini görmekteyiz.
Enumların tanımlaması buna benzer şekilde yapılmaktadır. Kullanım amaçları daha çok, parametre olarak bazı fonksiyonlara 1, 2, 3 gibi değerleri yerleştirmektense bunları grup altında toplayıp isimlendirerek karşılığında verilen değerleri kullanmaktır.
Örneğin bir haber sitesine yorum eklendi. Yorumun öncelikle onay için beklemesi gerekir ve bu bekleme sürecinde yöneticinin ekranında görünmesi gerekir. Onay bekliyor anlamında veritabanına 1 değerini yazalım. Yönetici sisteme girdi ve onayladı ise Onayladı anlamında veritabanına 2 değerini yazalım. Yönetici yorumu reddederse Reddedildi anlamında veritabanına 3 yazalım. Bunları yorum ekleme ve yönetici onay sayfalarında kullanırken 1 2 3 şeklinde kullanmak bazen karışıklığa yol açabilir. Bu sebeple OnayDurum isminde bir enum oluşturalım ve OnayBekliyor, Onaylandi, Reddedildi isminde değerlerimiz olsun.
enum OnayDurum
{
    OnayBekliyor = 1,
    Onaylandi = 2,
    Reddedildi = 3
}
 
Enumu oluşturduk. Şimdi kodumuzda kullanalım.
string yorum = "Örnek Yorum";
int onayDurumu = (int)OnayDurum.OnayBekliyor;
YorumKaydet(yorum, onayDurumu);
 
İlk yorum eklenirken 1 değerini gireceğimizi söylemiştik. 1’in anlamı, onay bekliyor idi. Oluşturduğumuz enumda ise OnayBekliyor’un karşılığındaki 1’i alabilmek için int türüne boxing yapmamız gerekti. Bu sayede yazdığımız enumun integer karşılığını alıp yorumu kaydedebildik.
 
Yepyeni makalelerde görüşmek dileğiyle :)
 
 
Veysel Uğur KIZMAZ
Bilgisayar Mühendisi
veysel@ugurkizmaz.com
www.ugurkizmaz.com