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();
}
}
}