IRONSOFTWAREHOME

C# Set Bayrak Enumunu Anlama: Bayrakları Atama

Uygulamanızı C# ile Kolayca Konteynerize Edin .NET CLI

Tim Corey

9m 57s

C#'ta izinler, yapılandırmalar veya ayarlarla çalışırken, genellikle birden fazla değerin tek bir değişkende saklanması gereken durumlarla karşılaşırız. Ayrı Boolean değerleri kullanmak yerine, Flag Enum'lar kullanabiliriz. Bu yöntem, ikili işlemlerden faydalanarak tek bir tamsayı değeri içinde birden fazla seçeneği etkili bir şekilde yönetir.

Bu makalede, Tim Corey'nin C#: 10 Dakika veya Daha Az Sürede Bayrak Ataması videosuna dayanarak C#'ta Flag Enum'ların nasıl ayarlanacağına daha derin bir bakış atacağız. Tim, ikili işlemleri kullanarak birden çok değeri nasıl atayacağımızı anlatıyor, böylece kodumuz daha etkili ve okunabilir hale geliyor. Hadi başlayalım.

Flag Enum'lara Giriş

Tim, bu dersin C#'ta ikiliyi anlamaya yönelik bir serinin parçası olduğunu açıklayarak başlıyor. Bu özel videoda, bayrakların ikili işlemler kullanılarak nasıl atanacağını odaklanıyor. Bayraklar, tek bir tamsayıda birden fazla değeri saklamamıza olanak tanır, bu da izin yönetimini hem daha basit hem de daha verimli hale getirir.

Bitwise OR Kullanarak Birden Fazla Bayrak Atanması

Tim, birden fazla izni bitwise OR (|) operatörü. Farklı izin seviyelerini içeren, SQL, Redis ve BuildSystem gibi, bir SystemPermissions` numaralandırması oluşturur. Birden fazla değişken kullanmak yerine, tüm izinleri tek bir değerde saklayabiliriz.

Birden fazla izni bir değişkene atama örneği:

// Assume that SystemPermissions is an enum with values SQL, Redis, and BuildSystem
SystemPermissions TimPermissions = SystemPermissions.SQL | SystemPermissions.Redis;

// Print the current permissions - it will include both SQL and Redis
Console.WriteLine(TimPermissions);

İkili Temsili Görüntüleme

Neler olduğunu daha iyi anlamak için, Tim, tamsayı değerini Convert.ToString(value, 2) kullanarak ikili biçime dönüştürmeyi önerir. Bu, hangi bitlerin ayarlandığını görselleştirmemizi sağlar:

// Convert the permissions to a binary string to see the set bits
Console.WriteLine(Convert.ToString((int)TimPermissions, 2));

Bu, farklı bit pozisyonlarının farklı izinlere karşılık geldiğini gösterir, böylece bir tamsayıda birden fazla ayarı nasıl saklayabileceğimizi gösterir.

OR-Eşittir Kullanarak Daha Fazla İzin Ekleme

Tim, daha fazla izin dinamik olarak ekleyebileceğimizi açıklıyor |= operatörü kullanarak daha fazla izni dinamik olarak ekleyebileceğimizi açıklar:

// Add the BuildSystem permission to the existing permissions
TimPermissions |= SystemPermissions.BuildSystem;

// Print the updated permissions - it now includes SQL, Redis, and BuildSystem
Console.WriteLine(TimPermissions);

32-bit Sınırını Anlamak

Tim önemli bir hususa dikkat çeker: C#'ta tamsayı veri türü bir 32-bit sınırına sahiptir. Bu, bir int içinde en fazla 32 benzersiz bayrağı depolayabileceğimiz anlamına gelir. 32'den fazla bayrağa ihtiyacımız varsa, long (64-bit) veya hatta birden fazla değer kullanmayı düşünmeliyiz. Ancak, çoğu durumda, 32 bayrak yeterince fazladır.

Bayrakları Bir Veritabanında Saklamak

Bayrak numaralarının en büyük avantajlarından biri, bir veritabanında verimli bir şekilde saklanabilmeleridir. Birden fazla Boolean sütunu saklamak yerine, tüm izinleri temsil eden tek bir tamsayı değeri saklayabiliriz. Tim, bu yaklaşımın veritabanı karmaşıklığını ve depolama gereksinimlerini önemli ölçüde azalttığını açıklar.

Örneğin, TimPermissions 37 olarak depolanmışsa, şu kombinasyonu temsil eder:

  • SQL (bit 1)
  • Redis (bit 3)
  • BuildSystem (bit 5)

Bu değeri veritabanından çektiğimizde, aktif izinleri belirlemek için kolayca kodunu çözebiliriz.

Sonuç

Tim, Flag Enum'larının gücünü vurgulayarak sonuçlandırır. İkili işlemleri kullanarak, tek bir tamsayıda birden fazla durumu etkili bir şekilde yönetebiliriz. Bu teknik, performansı artırır, veri depolamayı basitleştirir ve kodumuzu daha okunaklı hale getirir.

Bu yaklaşımı takip ederek, C# Flag Enum'ları kullanarak temiz, ölçeklenebilir bir izin yönetim sistemi uygulayabilirsiniz. Daha iyi bir anlayış elde etmek için tam videoyu izleyin.

Earn More by Sharing What You Love

Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Let's Stay in Touch!

Join our newsletter, you’ll get exclusive access on article updates. We value your privacy

Key in blue circle

Ücretsiz 30 günlük Deneme Anahtarınızı anında edinin.

Your trial license will be sent to your email address

Herhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.

bullet_checkedKredi kartı veya hesap oluşturma gerektirmezHerhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Bağımsız Danışmanlık Alın
Aşağıdaki formu doldurun veya sales@ironsoftware.com adresine e-posta gönderin
Bilgileriniz daima gizli kalacaktır.
Dünya Çapında Milyonlarca Mühendisin Güvendiği
Iron Software müşteri logoları
Ücretsiz 30 Günlük Deneme Anahtarınızı anında alın.
Kredi kartı veya hesap oluşturma gerektirmez