C# Enumeration (Numaralandırmalar)

Merhaba arkadaşlar,

Bu yazımda C# programlama dilinde Numaralandırmaları (Enumeraton) ele alacağız. Bir önceki yazımda C# Yapılardan (Struct) bahsettik. C# Struct (Yapılar) yazıma buradan ulaşabilirsiniz.

Nedir bu Enumeration peki?

Numaralandırma kelimesi enumaration sözcüğünden gelmektedir. C# dilinde numaralandırmalar enum anahtar sözcüğü ile ifade edilmektedirler. Enum sabitleri C# dilinde çeşitli sembolleri tamsayılar ile ifade edebilmek için geliştirilmiş bir veri yapısıdır.Yapı olarak çok basit ama işlevsel olarak çok kullanışlı bir veri tipidir.

Enum sabit bildirimi

Yukarıda haftanın günleri enum sabit değişkenin tanımında enum_name aslında belirleyeceğimiz enum sabitinin adı, enum_type enum sabitinin hangi türden olacağını ve parentez içinde yazdıklarımız ise numaralandırmak istediğimiz sembollerdir. Bu parantez içine enum sabit türünün alabileceği değer kadar sembol ekleyebiliriz. Yani enum sabit türümüzün byte olduğunu düşünürsek 255 tane sembol tanımlayabiliriz. (byte türünün max alabileceği değer 255 olduğu için)

Enum sabitlerinin türü varsayılan olarak int türündendir. Eğer enum sabitlerinin byte türünden olmasını istiyorsak aşağıdaki gibi bildirmeliyiz.

Enum sabitlerinin türünü char türü dışında bütün tamsayılar ile bildirebiliriz. Bunlar; byte, sbyte, short, ushort, int, uint, long, ulong türleridir.

şimdi enum sabitlerini kullanarak ekrana değerini yazdıralım. Enum sabitlerine erişmek için sınıf nesnelerimizin elemanlarına ulaşırken kullandığımız “.” ile erişebiliriz.

Enum sabtilerinde ilk sembol 0 ile ifade edilir. Biz belirtmedikçe sonra gelen her sembol ise +1 olarak artırılır. Yani Monday 0 ile ifade edilirken Tuesday 1 ile ifade edilir.

Enum sabitleri de birer veri tipi oldukları için metotlara parametre olarak aktarabiliriz.

Enum sabitlerinde sabitlerin ilk değeri 0’dan başladığını söylemiştik. Bunu değiştirmek yine bize kalmış. İlk sabiti istediğimiz bir değerinden başlatabiliriz.

Yukarıdaki örnekte görüldüğü üzere Haftanın ilk gününe 5 değerini verdik ve ondan sonra gelen değerlerin +1 arttığını görüyoruz. Bu örnekte olduğu gibi aslında haftanın bütün sembollerine de kendi istediğimiz değerleri verebiliriz. Aşağıdaki durumda geçerlidir.

Not: Geleneksel olarak enum sabitleri büyük harfle yazılır ama bu mecburi değildir. Değişken isimlendirme kuralına uyan her sembol enum olabilir.

Daha önceki örneklerde kullandık ama açıklamadık. Enum sabitlerine diğer türlerde olduğu gibi tür dönüşümü uygulanabilmektedir. Aşağıdaki örnekte Monday sembolünün sayı karşılığı yazılır.

System.Enum Sınıfı

C#’ta bildirilen bütün enum türleri aslında System.Enum isimli bir sınıftan türetilmiştir. Böylece bu sınıfın metotlarından yararlanabiliriz.

Şimdi System.Enum sınıfının bir metodu olan GetNames() metodunu kullanarak enum sabitlerinin değerini ekrana yazdıralım:

Bir enum sabiti birden fazla değeri temsil edebilir. Bu sayede enumlar üzerinde bitsel operasyonlar yapabiliriz. Bunu yapabilmek için herbir enum değişkeninin değerini ikinin üssü olacak şekilde ayarlamalıyız ve enum değişkenlerinin bit türünde olacağını göstermek içinde Flags niteliğinden yararlanacağız.

Şimdi bunu bir örnekle açıklamaya çalışalım. İlk önce yukarıdaki şartı yerine getirip daha sonra enum üzerinden bazı bitsel operasyonarı yapmaya çalışalım:

Bir yazının daha sonuna geldik 🙁 Bu yazımda C#’ta Numaralandırmalar (Enumeration) hakkında elde ettiğim bilgileri paylaşmaya çalıştım. Umarım faydalı olmuştur.

Bir sonraki yazımda görüşmek üzere 🙂

Kaynaklar:

Her Yönüyle C# 7.0, Sefer Algan, Pusula Yayincilik

https://docs.microsoft.com/tr-tr/dotnet/api/system.io?view=netframework-4.8

Leave a Comment