25 Ağustos 2015

Enum 2 : Flags

using System;

namespace FlagsEnum
{
    class Program
    {
        //Enum üyelerini birleştirebilriz.
        [Flags]//Flags etiketini koymazsak ToSting() metodu enumun değerini int olarak çevirir.
        public enum BorderSides { None = 0, Left = 1, Right = 2, Top = 4, Bottom = 8 }

        //Birleşmiş enumları | ve & kullanarak gösterelim.

        static void Main(string[] args)
        {
            BorderSides leftRight = BorderSides.Left | BorderSides.Right;//Burada Enum her iki değerin birleşimi olarak yazıldı.
            if ((leftRight & BorderSides.Left) != 0)
                Console.WriteLine("Includes Left");
            if ((leftRight & BorderSides.Right) != 0)
                Console.WriteLine("Includes Right");
            if ((leftRight & BorderSides.Top) != 0)//Burası çalışmaz çünkü tanımladığımız yerde Top değerini birleştirmedik.
                Console.WriteLine("Includes Top");


            string formatted = leftRight.ToString();
            Console.WriteLine("formatted = " + formatted);//"Left, Right"


            BorderSides s = BorderSides.Left;
            s |= BorderSides.Right;//bu aynı zamanda  s=BorderSides.Left|BorderSides.Right  ifadesine eşittir.
            Console.WriteLine(s == leftRight);//true

            s ^= BorderSides.Right; //  BorderSides.Right ı sildik.
            Console.WriteLine(s);//Left

            Console.ReadKey();


            /*Enumda Kullanılan Operatörler
            
             =  ==  !=     <    >   <=  >=  +   -   ^   &   |   +=  -=  ++  --  sizeof
            
           
             */

        }
    }
}