İsmail Cem YALNIZ

İsmail Cem Yalnız

Bilgisayar Mühendisi

Anasayfa Hakkımda Makaleler İletişim bayrağımız

C# Enum Kullanimi

Tarih: 12/27/2014

Enum(numaralandirma), isimlerin integer veri tipinde projemiz üzerinde sabitlemeye yarar. C# ta Enum kullanimi önemli bir yere sahiptir. Nerdeyse tüm .net projelerinde enum kullanilmaktadir.

Enum anahtar kelimesinin kullanimini bir örnekle açiklamak istiyorum. Örnegin bir magazamiz var ve yazilimimizin veritabaninda SATISLARIN bulundugu SATIS isminde bir tablomuz var. Bu tablo içerisinde TIP (ödeme tipi) sütunu mevcut. Ödeme Tiplerimiz ise Nakit, Kredi Karti ve Kapida Ödeme olsun. Tipi string olarak herbir satira Nakit, Kredi Karti veya Kapida Ödeme diye yazmaktansa smallInt (short) veya integer tipinde sayi olarak tanimlariz. Yani Nakit ise 1, Kredi Karti ise 2, Kapida Ödeme ise 3 olarak veritabaninda tutariz. Birçok veritabani tablolarinda böyle tip tarzi sütunlari ihtiyacimiz dâhilinde olustururuz. Projelerimize rahat hakimiyet saglamak yani hangi rakamin neye hitap ettigini unutmamak amaciyla enum içerisinde bulundururuz. O zaman gelin birlikte bir enum yazalim. Ben degisken ismine SATIS_TIP dedim numarasini da birden baslattim siz de int bir sayi olmak sartiyla istediginiz sayidan baslayin ve istediginiz degisken istediginiz class üzerinde tanimlayin.

 

Public enum SATIS_TIP
{
NAKIT = 1,
KREDI_KARTI = 2,
KAPIDA_ODEME = 3
}

Not: Eger benim atadigimin aksine her bir isim için(NAKIT, KREDI_KARTI, KAPIDA_ODEME) bir deger atamasi yapmadan tanimlarsaniz sistem numarayi 0 dan baslatir. Ihtiyaciniza göre dilerseniz yukaridaki tanimladigimiz SATIS_TIP teki gibi düzenli artan(1,2,3..) degil de farkli integer degerler de verebilirsiniz.

Peki enum olusturtuk ama projemizde bu tablomuzun tip alaniyla ilgili bir kod yazarsak nasil olmali? Tabii ki profesyonel, baskalarinin da çok rahat anlayabilecegi yani 1,2 gibi rakamlar vererek degil de enum ismini kodlamada bulunduracak sekilde yazilmalidir.

Örnek Konsol uygulamamiz asagidadir.

using System;

namespace EnumKullanimi
{
    public class SATIS
    {
        public int ID { get; set; }
        public string URUN_ADI { get; set; }
        public short SATIS_TIP { get; set; }
        public short KDV_TIP { get; set; }
    }

    public enum SATIS_TIP
    {
        NAKIT = 1,
        KREDI_KARTI = 2,
        KAPIDA_ODEME = 3
    }

    public enum KDV_ORAN
    {
        YUZDE_SIFIR,
        YUZDE_BIR,
        YUZDE_SEKIZ,
        YUZDE_ONSEKIZ
    }

    class Program
    {
        static void Main(string[] args)
        {
            
            SATIS satis = new SATIS();
            satis.ID = 1;
            satis.URUN_ADI = "Bulasik Makinesi";
            satis.SATIS_TIP = 0;
            satis.KDV_TIP = 0;
            //enumu degerine göre kullaniciya mesaj verelim
            switch ((SATIS_TIP)satis.SATIS_TIP)
            {
			//asagiya 1 yazmaktansa SATIS_TIP.NAKIT yazmak sence 
			//de daha okuna bilir degil mi?
                case SATIS_TIP.NAKIT:
                    Console.WriteLine("Nakit Ödeme Bekleniyor.");
                    break;
                case SATIS_TIP.KREDI_KARTI:
                    Console.WriteLine("Kredi Karti ile Ödeme Alindi.");
                    break;
                case SATIS_TIP.KAPIDA_ODEME:
                    Console.WriteLine("Kapida Ödeme Bekleniyor.");
                    break;
                default:
                    break;
            }
            //toplam enum sayisini bulalim
            Console.WriteLine("\n  Toplam enum sayisi {0}",
                              Enum.GetNames(typeof(SATIS_TIP)).Length.ToString());
            //enum isimlerini ekrana yazalim
            foreach (var item in Enum.GetNames(typeof(SATIS_TIP)))
            {
                Console.WriteLine("\n\t{0}",item);
            }
            //kdv oranlarinin integer enum degerlerini ekrana yazalim
            
            Console.WriteLine("\n  {0}", (int)KDV_ORAN.YUZDE_SIFIR);
            Console.WriteLine("\n  {0}", (int)KDV_ORAN.YUZDE_BIR);
            Console.WriteLine("\n  {0}", (int)KDV_ORAN.YUZDE_SEKIZ);
            Console.WriteLine("\n  {0}", (int)KDV_ORAN.YUZDE_ONSEKIZ);
            Console.ReadKey();
        }
    }

}

Uygulamamizi çalistirdigimizda asagida Resim1 deki gibi bir sonuç aliriz

 

Resim1

 KATEGORİLER