C# Enum Yapısı - SOFTSAM

Breaking

About Software

16.08.2014

C# Enum Yapısı

Enum Yapısı
Merhaba arkadaşlar,
Bu makalemde sizlere C# Enum yapısını anlatmaya çalışacağım. Bir C# .net kütüphanesi örneği birde kendi tanımladığımız bir enum yapısını inceleyeceğiz ve neden Enum kullandığımızı açıklamaya çalışacağız.


Enumaration

 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?
C# üzerinde .net kütüphanesinde bir çok Enum yapısı bulunmaktadır bununla beraber C# kullanıcılarında enum tanımlamasına olanak sağlamaktadır.C# üzerinde tanımlı Enum yapısına örnek olarak ConsoleColor yapsısını verebiliriz.
Kullanım şekli olarak ismini yazıp "." ya bastığınız zaman tüm alt elemanlar listelenir.

Tanımlaması:

enum HaftanınGunleri{}
şeklinde tanımlanır ve içerisine o isimle ilgili veriler aralarına virgül konarak yazılır.
Kullanımındaki asıl amaç (benim düşündüğüm) aynı isim altında toplanan değişkenlerin belli bir indise sahip olarak bir çatı altında toplanmasıdır ve çok kullanışlıdır.Örneğin renkleri düşünecek olursak her biri için ayrı değişken oluştur sonra ona bir  sayı ata ve kullanman gerektiğinde o numarayı yada ismi hatırla.
Enum yapısı sizlerin çok fazla kullanmayacağınız bir yapıdır.En azından şimdilik.

Metodları

Haftanın günlerinin hepsini birden almak istersek .GetNames() metodunu kullanırız. Bu metod yardımıyla enum içerisinde kullandığımız değerleri  string formatında bir dizide kullanabiliriz.
Örneğin  string[] days  = Enum.GetNames(typeof(HaftaninGunleri));  bu kod yardımıyla  artık  days string dizisinde enumdaki elemanlarımız var.
İsterseniz bir tamsayı sabitini bir enum sabitiyle ilişkilendirebilirsiniz.

Örneğin;
enum HaftaninGunleri
        {
            Pazartesi=0,
            Salı=1,
            Çarşamba=3,
            Perşembe=5,
            Cuma,
            Cumartesi,
            Pazar
        }

Birden çok numaralandırma kalıbına aynı değerde verilebilir.  Örneğin İngiltere’de  Sonbahar için fall yerine Autumn kullanılır. Bunu tanımlayan bir enum kalıbı tanımlıyacak olursak şu şekilde olur.

Enum Donemler
{
Spring,
Summer,
Fall = Autumn,
Winter
}

string[] days  = Enum.GetNames(typeof(HaftaninGunleri));
Tekrar başa dönerek HaftaninGunleri’nde tanımladığımız haftanın günlerini combobox ile kullanıya seçtirmek istiyoruz. Bunun içinde haftanın günlerini combobox’ın içine atmamız gerekmekte bunun için şu kodu yazmamız yeterli olacaktır.

// İlk önce Get.Names(); metodunu kullanarak string bir dizinin içerine günleri atıyorum
string[] days  = Enum.GetNames(typeof(HaftaninGunleri));
// Daha sonra bu dizinin içerisinde dönerek her bir string değeri combobox ın içerisine atıyorum.
       foreach(string gun in gunler)
       {
            daysCombo.Item.Add(gun);
       }  
Artık daysCombo adındaki combobox’ta sırasıyla HaftaninGunleri ndeki sabitlerimiz eklenmiş durumda.

Birde şunu anlatmanın yararlı olacağını düşünüyorum. HaftaninGunleri sabitlerinin içerisinde bir kontrol  yaparak istediğimiz sabitin enum altında tanımlı olan bir sabit olup, olmadığını görmek içinIsDefined(); metodunu kullanmamız yeterli olacaktır. Bu metod bool bir sonuç gönderir. Dikkat etmemiz gereken şey ise case sensitive çalışmasıdır.

Örneğin ;
bool success = Enum.IsDefined(typeof(
HaftaninGunleri), “Thursday”);
İf(success)
{
       MessageBox.Show(“Found”);
}
else
{
       MessageBox.Show(“Not Found”);
}


Bu örnek bize Perşembe gününün haftanın günleri enumunda tanımlı olup olmadığını göstericek eğer tanımlı ise IsDefined metodundan true dönecek ve mesaj kutumuzda bulundu yazacak, yoksa false değer döndürecek ve bulunamadı mesajı ile karşılaşacağız.

Eğer isDefined metodunda şunu yazmış olsaydık,

Enum.IsDefined(typeof(HaftaninGunleri), “THURSDAY”);
Bu bize false dönecekti. Dikkat etmenizde yarar var.

Bir başka derste görüşmek üzere Esen kalın....



Hiç yorum yok:

Yorum Gönder