Çoklu Enum Değerleri — Flags (C#)

Hakan Topuz
1 min readJun 17, 2017

--

Merhabalar,

Enum da Flags diye bir attribute varmış.Bu attribute’ün amacı enumerationlara çoklu degerler verebilmemizi sağlıyor.Şöyle ki normal bir enum tanımlaması şu şekilde.

public enum Yetki
{
Ekleme,
Silme,
Degistirme
}

Yalnız yetki olarak hem ekleme hemde silme yetkisi vermek istediğimizi düşünelim.Bu iki yetkiyi barındıran tek bir enum tanımlamak istersek,

[Flags]
public enum Yetki
{
Ekleme = 1,
Silme = 2,
Degistirme = 4,
Admin = Ekleme | Silme
}

O da bu şekilde olacaktır.

Çoklu yetki tanımlamasını yapabilmek için enum değerlerine 2'nin üslerini(1,2,4,8,16…)) verebiliyoruz.Bunun sebebi ne diye merak etmişsinizdir.Etmediyseniz bir yazılımcının sahip olması gereken en önemli özellikten mahrum olabilirsiniz dikkat edin..

Neyse ben merak ettim ve şöyle bir bilgiye ulaştım.Yine yetki enumundan devam edecek olursak kullanıcının yetkisini veritabanında bir field da tuttuğumuzu düşünelim.

Bu field da örneğin Admin yetkisini tutacak olursak, fielda Ekleme ve Silme enumlarının değerlerini toplayıp yazıyoruz.Yani x kullanıcısına admin yetkisi atamak istersek yetki field ına 1 + 2 = 3 değerini atıyoruz.

Değiştirme yetkisi vermek istersek yine bu rakama + 4 ekleyerek 7 değerini tutuyoruz.

Bu şekilde şunu sağlamış oluyoruz ki; bir kullanıcının yetki değeri 7 ise bu kullanıcının ekleme,silme,ve değiştirme yetkisi olduğunu anlamış oluyoruz.Eğer ki enum lar 2 nin üsleri şeklinde ilerlemeseydi ve biz Değiştirme enum’ının değerine 3 deseydik,

Yetki değeri 3 olan bir kullanıcının; değiştirme yetkisine mi yoksa ekleme ve silme yetkisine mi sahip olduğunu anlayamayacaktık.

Tam olarak amacı anlatabildim mi emin değilim ama, kısaca özetleyecek olursam; 2 nin üsleri şeklinde değer verilmesinin sebebi 2 enum değerinin toplamının, herhangi bir enum değeriyle çakışmaması amacını taşıdığıdır.

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

Hakan Topuz
Hakan Topuz

No responses yet

Write a response