IRONSOFTWAREHOME

了解 C# 设置标志枚举:分配标志

使用.NET CLI 轻松容器化您的 C# 应用程序

Tim Corey

9m 57s

在 C# 中处理权限、配置或设置时,我们经常会遇到需要在单个变量中存储多个值的情况。 我们可以使用标志枚举来代替为每个设置使用单独的布尔值。 该方法利用二进制操作有效管理单个整数值中的多个选项。

在本文中,我们将根据 Tim Corey 的视频 Binary in C# 深入探讨如何在 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 解释说,我们可以使用".NET "和 "Python "动态添加更多权限。|=` 运算符:

// 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 个标记绰绰有余。

在数据库中存储标记

使用标志枚举的最大优势之一是可以将其有效地存储在数据库中。 我们可以存储一个代表所有权限的整数值,而不是存储多个布尔列。 Tim 解释说,这种方法大大降低了数据库的复杂性和存储要求。

例如,如果TimPermissions存储为37,它代表以下组合:

  • SQL(第 1 位)
  • Redis(第 3 位)
  • 构建系统(第 5 位)

当我们从数据库中检索到这个值时,我们可以很容易地对其进行解码,以确定活动权限。

结论

最后,Tim 强调了 Flag Enums 的强大功能。 使用二进制操作,我们可以在一个整数中有效地管理多个状态。 这种技术可以提高性能,简化数据存储,并使我们的代码更具可读性。

按照这种方法,您可以使用 C# Flag Enums 实现一个简洁、可扩展的权限管理系统。 观看完整视频以便更好地理解。

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 天试用密钥
无需信用卡或创建账户