Derinlemesine yazılım eğitimleri için kanalımı takip edebilirsiniz...

C# Numaralandırıcılar(Enumeration – Enum)

Bu yazımda C#’ta Numaralandırıcılar(Enumeration – Enum) konusundan bahsedeceğim.Enum tipler, belirli değerleri bir grup altında isimleri ve sayısal karşılıklarını toplamak amacıyla kullanılırlar.
Bir classın enum olabilmesi için,class oluştururken,class yerine enum yazılmalıdır.Aşağıdaki Renk adında enum bir örnektir.

    enum Renk
    {
        Sarı,
        Mavi,
        Kırmızı,
        Mor,
        Lacivert
    }

Yukarıdaki değerler tıpkı dizi sıralamasında olduğu gibi index numarası 0 dan başlar.Enum değerlerin sırasına müdahale imkanımız vardır.Normalde yukarıdaki kodu derlediğimizde Sarı renk 0. indekste olacaktır.

    enum Renk
    {
        Sarı=1,
        Mavi,
        Kırmızı,
        Mor,
        Lacivert
    }

Bu şekilde 0. indekse Sarı = 1 yazdığımızda artık indeks 0 dan değil 1 den başlayacaktır.Mavinin değeri 2 , Kırmızının 3 tür.

    enum Renk
    {
        Sarı=11,
        Mavi,
        Kırmızı,
        Mor,
        Lacivert
    }

Sarı=11 yazarsak gene indeks 11den başlayacaktır.Mavinin değeri 12,Kırmızının 13, Lacivertin 15 tir.

    enum Renk
    {
        Sarı=10,
        Mavi=20,
        Kırmızı=30,
        Mor,
        Lacivert
    }

Sarının indeks numarası 10,Mavinin 20,Kırmızının 30,Morun 31,Lacivertin 32 dir.Yani değeri manuel olarak verilen en son elemandan sonrası birer fazlasıyla verilmektedir.


Cast işlemi ile enum tipinin içindeki elemanın ismine ya da sayısal karşılığına erişmek mümkündür.

            MessageBox.Show
                (
                (int)Renk.Sarı
                + " " +
                (int)Renk.Mavi
                + " " +
                (int)Renk.Kırmızı
                + " " +
                (int)Renk.Mor
                + " " +
                (int)Renk.Lacivert
                );
Yukarıda gördüğünüz gibi enumların isimlerini int e cast ettiğimizde index numaralarına ulaşabiliyoruz.
                MessageBox.Show
                (
                (Renk)10
                + " " +
                (Renk)20
                + " " +
                (Renk)30
                + " " +
                (Renk)31
                + " " +
                (Renk)32
                );

Yukarıda gördüğünüz gibi index numaralarını Renk enumuna çevirdiğimizde , o numaraya denk olan renki bize gönderiyor.
Şimdilik bu kadar 🙂
Bir sonraki yazımda görüşmek üzere…
İyi çalışmalar…

Bunlar da hoşunuza gidebilir...

2 Cevaplar

  1. Deniz KARADENİZ dedi ki:

    Hocam iyi çalışmalar,
    Identity framework ile ilgili bir sorum olacak vakit ayırırsanız,
    Kullanıcı rolleririni hiyerarşik olarak düzenlemek istiyorum ve Enum dizisi kullanmaya çalışıyorum.
    Şöyle ki

    Enum {Admin, Editör, User} 
    

    şeklinde dizimiz var Admin olan rolün altında kalan küçük yetkileri de otomatik olarak devralmasını istiyorum. Ancak küçük yetkiler kendisinden büyük olan alanlara yetkili olamayacaklar. Böylece rollerin sadece seviyesini tanımlamak yeterli olacak.

    fakat

        [Authorize(UserRoles.Admin)]
        public ActionResult Index()
        {
            return View();
            //SqlConnect(url);
    
        }
    

    buna nasıl uygulayacağımı düşünemedim. Bir çözümünüz var mı?

Bir cevap yazın

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