1-) C# - enum yapısı
Geliştirdiğimiz uygulamalarda çeşitli parametrik yönlendirmelere ihtiyaç duyabiliriz. Özellikle de yazılıma yeni başlayan bir çaylak yazılımcıysanız mutlaka bunun gibi bir yaklaşımda bulunmuşsunuzdur. “ 1 gelirse şunu şunu yap, 2 gelirse bunu yap”. Son çıktıya baktığımızda belki istenilen sonucu almışsınızdır fakat büyük bir proje olduğunda veya bir süre sonra tekrar aynı koda baktığınızda 1’in neyi, 2’nin neyi ifade ettiğini tekrardan hatırlamanız gerekir, unuttuğunuzda ise tekrardan kodu çözmeniz için zaman harcamanız gerekmektedir.
Numaralandırmalar (enumerations) kod içerisinde sayısal karşılaştırma veya işlem gerektiren yerlerde yazılımcı için daha okunabilirlik sunan, kod karmaşasını azaltan yardımcı bir yapıdır.
Enum’ın en temel yapısı aşağıdaki gibidir.
enum enum_ismi { deger1,deger2,deger3}; |
Şimdi ufak bir örnek ile kullanalım. Seçilen güne göre hafta içerisinde mi, hafta sonunda mı yer aldığını belirten bir konsol uygulaması yapalım.
2 3 4 5 6 7 8 9 10 11 12 13 14 15 | enum Gun { Pazartesi, Salı, Carsamba, Persembe, Cuma, Cumartesi, Pazar };
static void Main(string[] args) { Gun secilenGun = Gun.Carsamba;
if (secilenGun == Gun.Cumartesi || secilenGun == Gun.Pazar) { Console.WriteLine("Hafta sonu seçtiniz."); } else { Console.WriteLine("Hafta içi seçtiniz."); } } |
Yazdığımız uygulamada seçilen günü “Gun” tipinde aldık ve enum olarak karşılaştırmasını yaptık. Oluşturduğumuz enumlara referans değeri verebilir ve referans değeri ile de işlemler yapabiliriz. Bunun için aşağıdaki gibi ufak eklemeler ile aynı uygulamayı yazabiliriz.
2 3 4 5 6 7 8 9 10 11 12 13 14 15 | enum Gun { Pazartesi = 1, Salı = 2, Carsamba = 3, Persembe = 4, Cuma = 5, Cumartesi = 6, Pazar = 7};
static void Main(string[] args) { int secilenGun = (int)Gun.Carsamba;
if (secilenGun == (int)Gun.Cumartesi || secilenGun == (int)Gun.Pazar) { Console.WriteLine("Hafta sonu seçtiniz."); } else { Console.WriteLine("Hafta içi seçtiniz."); } } |
Yazdığımız iki uygulama da aynı ekran görüntüsünü verecektir.
Enum içerisine farklı türlerde de atama yapabiliriz.
enum Sonuç : byte { Kaldi,Gecti }; |
Enum farklı bir kullanımı örnek1.
enum sehirler {ADANA,ADIYAMAN,AFYON,AĞRI,AMASYA,ANKARA,ANTALYA,ARTVİN};
private void button1_Click(object sender, EventArgs e)
{
int plaka = Convert.ToInt32(textBox1.Text);
sehirler s;
s = (sehirler)plaka;
label1.Text = s.ToString();
}