11. Enum Sabitleri

Enum (Enumaration)

Bu yapı yazılım dilinde enum, enumaration ya da enum sabitleri olarak adlandırılır. Değişkenlerin alabileceği değerlerin sabit (belli) olduğu durumlarda programı daha okunabilir hale getirmek için kullanılır.Haftanın günleri, yılın ayları, renkler , ülkeler, şehirler hep kısıtlı sayıa seçeneğe sahip kümelerdir. O halde bizim yazıyla temsil edilen fakat gerçekte sayı belirten türlere gereksinimimiz vardır. İşte enum bunun için kullanılmaktadır. enum bildiriminin genel biçimi şöyledir Programda birçok değişkene tek tek sayısal değer vermek yerine “enum” kullanılabilir. Özet olarak “enum” yapısı sayıları anlamlı şekilde isimlendirerek kullanabilmeye izin verir. Bir enum değerini Console sınıfının Write ve WriteLine metotlarıyla yazdırırsak onların sayısal karşılıkları değil yazısal karşılıkları ekrana basılır.

Bir enum türünün enum sabitleri onun ilişkin olduğu tam sayı türünün sınırları dışında değer alamaz.

enum Test : byte
enum Test : byte

En genel “enum” bildirimi şu şekilde yapılır :

public enum SehirPlakalari
{
   Ankara = 6, Kocaeli = 41, İzmir = 35, Adana = 1, Hatay = 31
}

SehirPlakalari isimli Enum yapısı içerisinde birkaç sehir ve bunlara atanan sayısal değerler tanımlanabilir. Enum yapısının içindeki verilere erişmek için ‘GetNames’metodu kullanılır. Bu metot sayesinde bir “enum” sabiti içerisindeki değerler alınıp string (karakter katarı) formatında bir diziye atanabilir.

GetNames( ) Metodunun Kullanımı :

string[] SehirPlakalariDizisi = Enum.Getnames(typeof(SehirPlakalari));

Bu kod ‘SehirPlakaları’ isimli “enum”daki sabitleri yani tanımlanan şehirleri karakter katarı tipinde tanımlanmış ‘SehirPlakalarıDizisi’ adlı diziye atar.

ToString() Methodunun Kullanımı :

ToString() metoduna aşağıda belirtilen parametreler verilerek Enum sabiti içerisindeki istenilen değerlere ulaşılabilir.

Parametre     Görevi
G veya g         Değeri genel formatta yazar.
D veya d         Değerin sayısal karşılığını yazar.
X veya x         Değerin Hexadecimal karşılığını yazar.

Konu ile ilgili örnek bir uygulama aşağıda verilmiştir. Uygulamada IsletimSistemi isminde bir “enum” oluşturulmuştur.

using System;
namespace CSD
{
	class App
	{
	  public static void Main()
	  {
	     Colors c;
		c = (Colors)100;   //Geçerli!
	   }
	}

	enum Colors
	{
	   Red = 100,
	   Green = 200,
	   Blue = 300
	}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; 
namespace ConsoleApplication3
{
    class Program
    {
        enum IsletimSistemi
        {
         windows = 99, linux = 123,
        }
        static void Main(String[] args)
        {   
            int GirilenDeger;
            IsletimSistemi IslSis = new IsletimSistemi();
            Console.WriteLine("İşletim Sisteminizi Seçiniz");
            Console.WriteLine("1. Windows için");
            Console.WriteLine("2. Linux için");
            GirilenDeger = Convert.ToInt32(Console.ReadLine());
            switch (GirilenDeger)
            {
                case 1:
                    IslSis = IsletimSistemi.windows;
                    Console.WriteLine("İşletim Sistemi = " + IslSis.ToString("G"));
                    Console.WriteLine("İşletim sistemine Enum içinde verilen değer = " + IslSis.ToString("D"));
                    Console.WriteLine("Değerin hexadecimal karşılığı = " + IslSis.ToString("X"));

                    break;

                 case 2:
                    IslSis = IsletimSistemi.linux;
                    Console.WriteLine("İşletim Sistemi = " +       IslSis.ToString("G"));
                    Console.WriteLine("İşletim sistemine Enum içinde verilen değer = " + IslSis.ToString("D"));
                    Console.WriteLine("Değerin hexadecimal karşılığı = " + IslSis.ToString("X"));
                  break;

                  default:
                     Console.WriteLine("Bu isletim sistemi mevcut değil");
                   break;

            }

        }

     }

}


Enum valuesi verip nameini alma

Enum.GetName(typeof(EnumName), EnumValue)