C# Enum Değerleri
- 170
- (1)
- (5)
- 01 Haz 2017
Enum
yapıları sayısal sabitlere karşılık gelen isimlendirilmiş değerlerin tek bir veri türü olarak tanımlanmış halidir.
Kısa bir örnekle daha net açıklanabilir.
public enum Durum { BagliDegil, Baglaniyor, Baglandi, Kapali }
Yukarıdaki şekilde tanımlanan enum
bir bağlantının bağlantı durumu için kullanılabilir. Eğer bağlantı durumunu string
bir değişkenle denetlerseniz bu değişkeni kodlama esnasında yanlış yazma ihtimalinizde derleyici bu yanlışı farketmeyecektir.
string baglanti = "BagliDegil";
// ... bağlanma işlemleri
baglanti = "Baglandi";
// ... bağlanma sonrası
if (baglanti == "Bagladi")
{
// ... bağlanırsa çalıştır
}
Yukarıda if
koşulunda "Baglandi"
yerine "Bagladi"
yazıldığı için ve bu değer string
olduğu için derlenip çalıştırılacak, ancak istenen sonuç elde edilmeyecektir. Sonucun neden elde edilmediğinin tespiti içinse yazılımcı tekrar koda dönüp sorunun ne olduğunu arayacak ve zaman kaybedecektir.
Bunun yerine şöyle bir kod yazılabilir.
Durum baglanti = Durum.BagliDegil;
// ... bağlanma işlemleri
baglanti = Durum.Baglandi;
// ... bağlanma sonrası
if (baglanti == Durum.Bagladi)
{
// ... bağlanırsa çalıştır
}
Derleyici bu kodu asla derlemeyecek ve Visual Studio sorunun ne olduğunu doğrudan gösterecektir. Çünkü Durum
' a ait Bagladi
diye bir enum elemanı bulunmamaktır.
Aşağıdaki örneği uygulayabilir veya detaylı inceleyebilirsiniz.
enum Cins { TerrierMaltese, CavalierKingCharles, EnglishCocker, Kangal,
Rottweiler, Spitz }
class Program
{
static void Main(string[] args)
{
while (true)
{
// Her köpek cinsi için aynı indisli fiyatlar
float[] fiyatlar = new float[] { 2000, 2500, 1250, 800, 3750, 3200 };
// Enum değişkeninin değerlerini bu şekilde listeye aktarabilirsiniz
var cinsler = Enum.GetNames(typeof(Cins)).ToList();
// Değerleri ekrana yazdırır
foreach (var cins in cinsler)
{
Console.WriteLine($"{cinsler.IndexOf(cins)}) {cins}");
}
Console.Write("Seçim Yapın:");
// Seçimi int değerinden Cins enum değerine dönüştürür
var secilen = (Cins)Convert.ToInt32(Console.ReadLine());
switch (secilen)
{
case Cins.TerrierMaltese: // karşılığı 0' dır
Console.WriteLine($"{secilen.ToString()} fiyatı: {fiyatlar[(int)secilen].ToString("0.00 TL")} teslimat: 3 gün");
break;
case Cins.CavalierKingCharles: // karşılığı 1' dır
Console.WriteLine($"{secilen.ToString()} fiyatı: {fiyatlar[(int)secilen].ToString("0.00 TL")} teslimat: 4 gün");
break;
case Cins.EnglishCocker: // karşılığı 2' dır
Console.WriteLine($"{secilen.ToString()} fiyatı: {fiyatlar[(int)secilen].ToString("0.00 TL")} teslimat: 5 gün");
break;
case Cins.Kangal: // karşılığı 3' dır
Console.WriteLine($"{secilen.ToString()} fiyatı: {fiyatlar[(int)secilen].ToString("0.00 TL")} teslimat: 1 gün");
break;
case Cins.Rottweiler: // karşılığı 4' dır
Console.WriteLine($"{secilen.ToString()} fiyatı: {fiyatlar[(int)secilen].ToString("0.00 TL")} teslimat: 2 gün");
break;
case Cins.Spitz: // karşılığı 5' dır
Console.WriteLine($"{secilen.ToString()} fiyatı: {fiyatlar[(int)secilen].ToString("0.00 TL")} teslimat: 5 gün");
break;
default:
return;
}
Console.ReadKey();
}
}
}