C# Dilinde "enum" Yapısı

Eyl 06, 2013
Enum (Enumaration)

Bu yapı yazılım dilinde enum, enumaration ya da enum sabitleri olarak adlandırılır. Değişkenlerin alabileceği değerlerin sabit (belli) olduğu durumlarda programı daha okunabilir hale getirmek için kullanılır. Programda birçok değişkene tek tek sayısal değer vermek yerine "enum" kullanılabilir. Özet olarak "enum" yapısı sayıları anlamlı şekilde isimlendirerek kullanabilmeye izin verir.

En genel "enum" bildirimi şu şekilde yapılır :

public enum SehirPlakalari
{
   Ankara = 6, Kocaeli = 41, İzmir = 35, Adana = 1, Hatay = 31
}

SehirPlakalari isimli Enum yapısı içerisinde birkaç sehir ve bunlara atanan sayısal değerler tanımlanabilir. Enum yapısının içindeki verilere erişmek için ‘GetNames’metodu kullanılır. Bu metot sayesinde bir "enum" sabiti içerisindeki değerler alınıp string (karakter katarı) formatında bir diziye atanabilir.

GetNames( ) Metodunun Kullanımı :

string[] SehirPlakalariDizisi = Enum.Getnames(typeof(SehirPlakalari));

Bu kod ‘SehirPlakaları’ isimli "enum"daki sabitleri yani tanımlanan şehirleri karakter katarı tipinde tanımlanmış ‘SehirPlakalarıDizisi’ adlı diziye atar.

ToString() Methodunun Kullanımı :

ToString() metoduna aşağıda belirtilen parametreler verilerek Enum sabiti içerisindeki istenilen değerlere ulaşılabilir.

Parametre     Görevi
G veya g         Değeri genel formatta yazar.
D veya d         Değerin sayısal karşılığını yazar.
X veya x         Değerin Hexadecimal karşılığını yazar.

Konu ile ilgili örnek bir uygulama aşağıda verilmiştir. Uygulamada IsletimSistemi isminde bir "enum" oluşturulmuştur.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; 
namespace ConsoleApplication3
{
    class Program
    {
        enum IsletimSistemi
        {
        windows = 99, linux = 123,
        }
        static void Main(String[] args)
        {   
            int GirilenDeger;
            IsletimSistemi IslSis = new IsletimSistemi();
            Console.WriteLine("İşletim Sisteminizi Seçiniz");
            Console.WriteLine("1. Windows için");
            Console.WriteLine("2. Linux için");
            GirilenDeger = Convert.ToInt32(Console.ReadLine());
            switch (GirilenDeger)
            {
                case 1:
                    IslSis = IsletimSistemi.windows;

                    Console.WriteLine("İşletim Sistemi = " + IslSis.ToString("G"));
                    Console.WriteLine("İşletim sistemine Enum içinde verilen değer = " + IslSis.ToString("D"));
                    Console.WriteLine("Değerin hexadecimal karşılığı = " + IslSis.ToString("X"));
                    break;
                 case 2:
                    IslSis = IsletimSistemi.linux;
                    Console.WriteLine("İşletim Sistemi = " +       IslSis.ToString("G"));
                    Console.WriteLine("İşletim sistemine Enum içinde verilen değer = " + IslSis.ToString("D"));
                    Console.WriteLine("Değerin hexadecimal karşılığı = " + IslSis.ToString("X"));
                    break;
                 default:
                    Console.WriteLine("Bu isletim sistemi mevcut değil");
                    break;
            }
        }
     }
}