Altbilgi içeriğine atla
Iron Academy Logo
C# öğrenin
C# öğrenin

Diğer Kategoriler

C# Set Bayrak Enumunu Anlama: Bayrakları Atama

[[academy-video-youtube({"vid": "bg0QVTS4Q0c", "start_time": "0", "title": "Uygulamanızı C# ile Kolayca Konteynerize Edin .NET CLI", "creator": "Tim Corey", "length": "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, birSystemPermissions` 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);
// 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));
// 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);
// 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.

Hero Worlddot related to C# Set Bayrak Enumunu Anlama: Bayrakları Atama
Hero Affiliate related to C# Set Bayrak Enumunu Anlama: Bayrakları Atama

Sevdiğiniz Şeyleri Paylaşarak Daha Fazla Kazanın

.NET, C#, Java, Python veya Node.js ile çalışan geliştiriciler için içerik oluşturuyor musunuz? Uzmanlığınızı ek gelire dönüştürün!

Iron Destek Ekibi

Haftada 5 gün, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara