C# Numaralandırma (Enum)

C# Dersleri Ahmet Şenlik 2.921 kez görüntülendi.

Numaralandırma (enumeration); belli sözcüklerin, belli tamsayıları temsili durumlarında kullanılan bir yapıdır. Değişkenlerin alabileceği değerlerin sabit olduğu durumlarda kullanılır.

Numaralandırma(Enum) Tanımlama
Numaralandırmaları tanımlamak için’ enum’ anahtar kelimesini kullanırız.
Örneğin, içinde ay isimlerini barındıran bir numaralandırma tanımlayalım.

[csharp]enum aylar
{
Ocak, Şubat, Mart, Nisan, Mayıs, Haziran, Temmuz,
Ağustos, Eylül, Ekim, Kasım, Aralık
}[/csharp]

Numaralandırma tutulan değişkenlere karşılık gelen değerler tablosu

Numaralandırma tutulan değişkenlere karşılık gelen değerler tablosu

Örnekte Ocak ayı 0 değerini alacak ve ondan sonra gelen sabitlerin değeri birer artarak devam edip gidecektir.
Duruma göre tanımladığımız sabitlere farklı sayısal değerler de atayabiliriz. Bu işlem için “=” işlecini kullanmalıyız.

[csharp]enum aylar
{
Ocak=1,Şubat, Mart, Nisan, Mayıs, Haziran, Temmuz,
Ağustos, Eylül, Ekim, Kasım, Aralık
}[/csharp]

Numaralandırma tutulan değişkenlere karşılık gelen değerler tablosu

Numaralandırma tutulan değişkenlere karşılık gelen değerler tablosu

 

[csharp]enum aylar
{
Ocak=1,Şubat,Mart,Nisan,Mayıs,Haziran,Temmuz=1,
Ağustos, Eylül, Ekim, Kasım, Aralık
}[/csharp]

Yukarıda yazan örnekte ki tanımlamayı yaparsak sabitlerimizin değerleri aşağıda bulunan tablodaki gibi olacaktır.

Numaralandırma tutulan değişkenlere karşılık gelen değerler tablosu

Numaralandırma tutulan değişkenlere karşılık gelen değerler tablosu

Numaralandırma yapılarımızın içinde tutulan değerler varsayılan olarak integer tipindedir. İhtiyaca uygun olarak diğer tamsayı tiplerinde de (byte, sbyte, short, ushort, uint, long ve ulong) tanımlama yapılabilir.

[csharp]enum aylar : byte
{
Ocak, Şubat, Mart, Nisan, Mayıs, Haziran, Temmuz,
Ağustos, Eylül, Ekim, Kasım, Aralık
}[/csharp]

Burada dikkat etmemiz gereken parantezler içindeki değerler belirtilen türün kapasitesi ölçüsünde olmalıdır. Örneğin numaralandırmanın türünü byte olarak tanımladıysak en fazla 255 tane sözcük girmeliyiz.

Numaralandırma (Enum) Yapısını Kullanma

Bir önceki başlıkta numaralandırmaların nasıl tanımlandıklarını gördük. Şimdi de tanımladığımız numaralandırma yapılarını program içinde nasıl kullanacağımıza bakalım.
Öncelikle aylar adında bir enum tanımlayalım.

[csharp]enum aylar
{
Ocak, Şubat, Mart, Nisan, Mayıs, Haziran, Temmuz,
Ağustos, Eylül, Ekim, Kasım, Aralık
}[/csharp]

Şimdide enumu program içinde çağıralım.

[csharp]class Program
{
static void Main(string[] args)
{
aylar ay = aylar.Şubat;
Console.WriteLine(ay);
Console.Read();
}
}[/csharp]

Ekran çıktısı:
Şubat

 

[csharp]class Program
{
static void Main(string[] args)
{
aylar ay = aylar.Şubat;
Console.WriteLine((int)ay); // sabitin integer karşılığını ekrana yazdırdık.
Console.Read();
}
}[/csharp]

Ekran çıktısı:
1

Şimdi de yapımız içindeki tüm sabitleri ekrana nasıl yazdıracağımıza bakalım. Enum içindeki tüm sabitleri almak istediğimiz de GetNames() metodunu kullanırız. GetNames() metodu, enum içindeki tüm sabitleri string tipinde bir dizi olarak almamızı sağlar.

[csharp]enum aylar
{
Ocak,Şubat,Mart,Nisan,Mayıs,Haziran,Temmuz,
Ağustos,Eylül,Ekim,Kasım,Aralık
}
class Program
{
static void Main(string[] args)
{
string[] ay = Enum.GetNames(typeof(aylar)); // GetNames() metoduyla aldığımız değerleri string tipinde "ay" adında ki dizimize aktarıyoruz.
foreach (string ayYaz in ay)
{
Console.WriteLine(ayYaz);
}
Console.Read();
}
}[/csharp]

Bir sabitin enum içerisinde tanımlı olup olmadığını bulmak için IsDefined() metodunu kullanırız. Bu metot bool türünde bir sonuç döndürür.

[csharp]class Program
{
static void Main(string[] args)
{
bool kontrol = Enum.IsDefined(typeof(aylar), "Ocak");
if (kontrol)
{
Console.WriteLine("Bu ay tanımlıdır.");
}
else
{
Console.WriteLine("Bu ay tanımlı değildir.");
}
Console.Read();
}
}[/csharp]

Kocaeli Üniversitesinde Bilgisayar Programcılığı okudum DGS ile 2016 yılında Sakarya Üniversitesi Bilgisayar mühendisliğini kazandım. Yazılımla uğraşmayı çok seviyorum bu alanda kendimi daha da geliştirmeyi düşünüyorum. Eğer siz de seviyorsanız bu işi devam edin başlamadıysanız başlayın başaracağınıza inanın. 🙂

Sosyal Ağlarda Paylaş

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.