IRONSOFTWAREHOME

理解C#設置旗標枚舉:分配旗標

容器化您的C#應用程式,輕鬆使用.NET CLI

Tim Corey

9分57秒

在C#中處理許可權、配置或設定時,我們經常會遇到需要在單一變數中儲存多個值的情況。 我們可以使用旗標列舉來取代為每個設定使用單獨Boolean值。 此方法利用二進位運算來有效管理單一整數值中的多個選項。

在本文中,我們將深入了解如何根據Tim Corey的影片C#中的二進位:10分鐘或更短時間內分配旗標來設置旗標列舉。 Tim介紹了如何使用二進位運算分配多個值,讓我們的程式碼更有效率、更易於閱讀。 讓我們開始吧。

旗標列舉介紹

Tim首先解釋這堂課是C#中理解二進位系列的一部分。 在這個特定影片中,他專注於如何使用二進位運算分配旗標。 旗標允許我們在單一整數中儲存多個值,使得許可權管理變得更加簡單和有效。

使用按位 OR 分配多個旗標

Tim演示了如何使用按位OR (|) 運算子。 他建立了一個列舉SystemPermissions,其中包含SQL、Redis和BuildSystem等不同的許可權級別。 我們可以將所有許可權儲存在一個值中,而不是使用多個變數。

將多個許可權分配給變數的範例:

// 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);

顯示二進位表示

為了更好地理解發生了什麼,Tim建議將整數值轉換為其二進位形式使用Convert.ToString(value, 2)。 這讓我們可以可視化哪些位已設置:

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

這顯示了不同位位置對應於不同的許可權,說明了如何在一個整數中儲存多個設定。

使用 OR-Equals 新增更多許可權

Tim解釋我們可以使用`|=運算子動態新增更多的許可權。

// 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位限制

Tim強調了一個重要的考量:在C#中的整數資料型別有32位的限制。 這意味著我們只能在一個int中儲存最多32個獨特的旗標。 如果我們需要超過32個旗標,應考慮使用long(64位)甚至多個值。 然而,在大多數情況下,32個旗標已經綽綽有餘。

在資料庫中儲存旗標

使用旗標列舉的最大優勢之一是它們可以在資料庫中高效地儲存。 與其儲存多個Boolean列,我們可以儲存一個代表所有許可權的整數值。 Tim解釋這種方法大大減少了資料庫的複雜性和儲存需求。

例如,如果TimPermissions儲存為37,它代表了一個組合:

  • SQL(位元1)
  • Redis(位元3)
  • BuildSystem(位元5)

當我們從資料庫中檢索這個值時,我們可以輕鬆解碼以確定活動的許可權。

結論

Tim總結強調了旗標列舉的強大功能。 使用二進位操作,我們可以在單一整數中有效管理多個狀態。 這項技術改善了性能,簡化了資料儲存,並讓我們的程式碼更容易閱讀。

通過採取這種方法,您可以使用C#旗標列舉實現一個清晰、可擴展的許可權管理系統。 觀看完整影片以獲得更好的理解。

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

立即免費取得 30 天試用金鑰

Your trial license will be sent to your email address

無任何限制。100% 解鎖。無需信用卡。

OR
bullet_checked無需信用卡或建立帳號無任何限制。100% 解鎖。無需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
獲取您的無義務諮詢
填寫以下表格或發送電子郵件至sales@ironsoftware.com
您的詳細資訊將始終保密。
被全球數百萬工程師信任
Iron Software的客戶標誌
立即獲取您的30天試用金鑰
無需信用卡或帳戶建立