Bu yapı program dilinde enum, enumaration veya 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. Programda çoğu parametre ayrı ayrı sayısal değer vermek yerine "enum" kullanmak mümkün. Özet olarak "enum" yapısı sayıları anlamlı biçimde isimlendirerek kullanabilmeye izin verir.
En genel "enum" bildirimi şöyle yapılır :
Aylar adlı Enum yapısı içerisinde aylar 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 vasıtası ile bir "enum" sabiti içindeki değerler alınıp string (karakter katarı) formatında bir diziye atanabilir.
GetNames( ) Metodunun Kullanımı :
Bu kod ‘Aylar’ isimli "enum"daki sabitleri yani tanımlanan ayları karakter katarı tipinde tanımlanmış ‘AylarDizisi’ adlı diziye atar.
ToString() Methodunun Kullanımı :
ToString() metoduna aşağıda belirtilen parametreler verilerek Enum sabiti içindeki istenilen değerlere ulaşılabilir.
Konu hakkında örnek bir uygulama aşağıda verilmiştir. Uygulamada IsletimSistemi isminde bir "enum" oluşturulmuştur.
En genel "enum" bildirimi şöyle yapılır :
C#:
public enum Aylar
{
Ocak = 1,
Subat = 2,
Mart = 3,
Nisan = 4,
Mayis = 5,
Haziran = 6,
Temmuz = 7,
Agustos = 8,
Eylul = 9,
Ekim = 10,
Kasim = 11,
Aralik = 12
}
GetNames( ) Metodunun Kullanımı :
C#:
string[] AylarDizisi= Enum.Getnames(typeof(Aylar));
Bu kod ‘Aylar’ isimli "enum"daki sabitleri yani tanımlanan ayları karakter katarı tipinde tanımlanmış ‘AylarDizisi’ adlı diziye atar.
ToString() Methodunun Kullanımı :
ToString() metoduna aşağıda belirtilen parametreler verilerek Enum sabiti içindeki 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 hakkında örnek bir uygulama aşağıda verilmiştir. Uygulamada IsletimSistemi isminde bir "enum" oluşturulmuştur.
C#:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace TurkDevelopers
{
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;
}
}
}
}