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!

Tim Corey
9分57秒
在C#中處理許可權、配置或設定時,我們經常會遇到需要在單一變數中儲存多個值的情況。 我們可以使用旗標列舉來取代為每個設定使用單獨Boolean值。 此方法利用二進位運算來有效管理單一整數值中的多個選項。
在本文中,我們將深入了解如何根據Tim Corey的影片C#中的二進位:10分鐘或更短時間內分配旗標來設置旗標列舉。 Tim介紹了如何使用二進位運算分配多個值,讓我們的程式碼更有效率、更易於閱讀。 讓我們開始吧。
Tim首先解釋這堂課是C#中理解二進位系列的一部分。 在這個特定影片中,他專注於如何使用二進位運算分配旗標。 旗標允許我們在單一整數中儲存多個值,使得許可權管理變得更加簡單和有效。
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);' Assume that SystemPermissions is an enum with values SQL, Redis, and BuildSystem
Dim TimPermissions As SystemPermissions = SystemPermissions.SQL Or 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));' Convert the permissions to a binary string to see the set bits
Console.WriteLine(Convert.ToString(CInt(TimPermissions), 2))這顯示了不同位位置對應於不同的許可權,說明了如何在一個整數中儲存多個設定。
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);' Add the BuildSystem permission to the existing permissions
TimPermissions = TimPermissions Or SystemPermissions.BuildSystem
' Print the updated permissions - it now includes SQL, Redis, and BuildSystem
Console.WriteLine(TimPermissions)Tim強調了一個重要的考量:在C#中的整數資料型別有32位的限制。 這意味著我們只能在一個int中儲存最多32個獨特的旗標。 如果我們需要超過32個旗標,應考慮使用long(64位)甚至多個值。 然而,在大多數情況下,32個旗標已經綽綽有餘。
使用旗標列舉的最大優勢之一是它們可以在資料庫中高效地儲存。 與其儲存多個Boolean列,我們可以儲存一個代表所有許可權的整數值。 Tim解釋這種方法大大減少了資料庫的複雜性和儲存需求。
例如,如果TimPermissions儲存為37,它代表了一個組合:
當我們從資料庫中檢索這個值時,我們可以輕鬆解碼以確定活動的許可權。
Tim總結強調了旗標列舉的強大功能。 使用二進位操作,我們可以在單一整數中有效管理多個狀態。 這項技術改善了性能,簡化了資料儲存,並讓我們的程式碼更容易閱讀。
通過採取這種方法,您可以使用C#旗標列舉實現一個清晰、可擴展的許可權管理系統。 觀看完整影片以獲得更好的理解。
Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!
Join our newsletter, you’ll get exclusive access on article updates. We value your privacy