25 Ağustos 2015

Enum 1 : Enum Nedir?

using System;

namespace Enum
{
    class Program
    {
        /*Enum isimlendirilmiş sayısal sabitlerden oluşan bir gruptur.
         Örnek;
         */
        //public enum BorderSide { Left, Right, Top, Bottom }
        //Burada default olarak BorderSide değerlerini 0 dan başlayarak int formatında artan sayılar verir
        //Left=0,Right=1,Top=2,Bottom=3


        //Sayısal değerini byte formatında almak istersek
        //public enum BorderSide:byte { Left, Right, Top, Bottom }



        //Sayısal Değerlerini Elle Girmek İstersek
        //public enum BorderSide : byte { Left=1, Right=2, Top=10, Bottom=11 }


        //Sayısal değerlerde sağda olan her enum solundaki sayının bir fazlasını alır.
        public enum BorderSide : byte { Left = 1, Right, Top = 10, Bottom }

       
        //Bir Enumu Başka Enumu tarif etmek içinde kullanabiliriz.
        public enum HorizantalAlignment
        {
            Left=BorderSide.Left,
            Right=BorderSide.Right,
            Center
        }

      

        static void Main(string[] args)
        {
            //Enumda sayısal değerden enuma enumdan sayısal değerlere dönüşüm Aşağıdaki gibidir.
            //int x = (int)BorderSide.Top;//Sayısal Hale Dönüştürdük
            //BorderSide side = (BorderSide)x;//Enum Haline dönüştürdük
            //bool leftOrRight = (int)side <= 2;

          

            //İki enum arasındaki dönüşüm integral değerlerine göre olur. Aşağıdaki iki gösterimde aynıdır.
            //HorizantalAlignment h = (HorizantalAlignment)BorderSide.Right;
            //HorizantalAlignment h = (HorizantalAlignment)(int)BorderSide.Right;


            //Bir enum sadece 0 hariç direk integer olarak tanımlanamaz.
            //BorderSide a = 3;//Hata
            //0 Genel olarak enumlarda default value olarak kullanılır.
            //0 a "no flags" da denir.
            BorderSide b=0;
            if (b == 0)
                Console.WriteLine(b);



            BorderSide topSide = BorderSide.Top;
            bool isTop = (topSide == BorderSide.Top);
            Console.WriteLine((int)BorderSide.Left + "-->" + BorderSide.Left);
            Console.WriteLine((int)BorderSide.Right + "-->" + BorderSide.Right);
            Console.WriteLine((int)BorderSide.Top + "-->" + BorderSide.Top);
            Console.WriteLine((int)BorderSide.Bottom + "-->" + BorderSide.Bottom);

            Console.ReadKey();

           
        }
    }
}