IRONSOFTWAREHOME

在 C# 中移除标记

C# 中的二进制:10 分钟或更短时间内移除标志

Tim Corey

5m 22s

在 C# 中使用二进制操作有时会让人感觉不知所措,但了解如何高效地操作标志是开发人员的一项基本技能。 在本文中,我们将探讨 Tim Corey 在其视频 "C#中的二进制 "中解释的 C# 中移除标志的过程:在 10 分钟或更短时间内移除标记"。 Tim 清楚地介绍了如何使用位操作从标记系统中删除权限。 让我们一步步深入他的解释。

移除标记简介

Tim 在视频的开头继续讲述他对 C# 中二进制操作的理解系列。 在第十二课中,他将重点介绍如何在十分钟内从一组权限中移除标记。 他保留了上一课中使用枚举分配权限的代码。 本环节的目标是演示如何从指定集合中删除特定权限。

确定要移除的标志

在演示开始时,Tim 讨论了这样一个场景:需要从分配给用户的一组权限中删除一个权限,特别是 "Redis"。 他解释说,权限是以二进制格式存储的,其中每个比特代表不同的权限。

挑战在于删除 "Redis "权限的同时不影响该权限集中的其他权限。 Tim 指出,第三位(假设基于零的索引)代表 "Redis",需要清除。

使用位操作删除标志

Tim 提醒观众注意位操作掩码和 NOT (~) 操作符。 为了去除标记,他采用了以下方法:

// Remove the Redis permission from TimPermissions
TimPermissions = TimPermissions & ~SystemPermissions.Redis;

他解释了这一操作的每个部分:

  • SystemPermissions.Redis 提供了 'Redis' 的标志位值。

  • ~SystemPermissions.Redis 进行位取反操作,将 'Redis' 位从 1 变为 0,其他所有位变为 1。

  • TimPermissions & ~SystemPermissions.RedisTimPermissions 和取反的掩码执行按位与操作,有效清除了 'Redis' 位,同时保留其他位。

这种方法可确保在删除目标权限的同时,不会无意中修改标志的其余部分。

打印更新的权限

在应用位操作后,Tim 输出了 TimPermissions 的更新值。 他确认代表 "Redis "的第三个位已被成功删除。 这证明了该方法的正确性。

移除标志的更简便方法

然后,Tim 介绍了操作的速记版本:

// Shorthand operation to remove the Redis permission
TimPermissions &= ~SystemPermissions.Redis;

他解释说,使用 &= 只是更简洁地表达相同逻辑的一种方式,使代码更简洁的同时保持相同的效果。 他强调,了解长短两种版本有助于理解 C# 中位运算的工作原理。

了解位操作的重要性

蒂姆承认,使用二进制和比特运算可能具有挑战性,他说:"是的,再次使用二进制有时会烧坏你的大脑,这没关系。他向观众保证,掌握这些概念需要时间和练习。

他的建议是要学习每个按位运算符——AND ( &)、OR (|), and NOT (~)——在将它们组合成更复杂的操作之前。 了解这些工具如何单独工作,有助于开发人员掌握它们在一起使用时的交互方式。

此技术为何重要

Tim 强调,使用位操作移除标志不仅限于权限处理。 他提供了一个游戏开发场景的例子,其中一个实体可以有多个状态作为标志存储。 使用这种技术,开发人员可以有效地切换状态,而无需进行不必要的计算。

他还强调,与其他管理多状态的方法相比,使用位操作具有很高的性能。 由于这些操作是在二进制级别执行的,因此与维护单独的布尔属性等替代方法相比,它们更快、更节省内存。

最后的想法

Tim 最后强调了练习这些操作的重要性,直到它们成为第二天性。 他鼓励观众不要只是死记硬背语法,而是要努力深入理解这些技术的工作原理。

"开始是一种规则,然后变成一种理解"。- 蒂姆-科里

通过不断学习这些概念,开发人员将增强在 C# 中操作二进制标志的信心,从而更熟练地编写高效、可维护的代码。

结论

通过 Tim Corey 条理清晰的讲解,我们学会了如何在 C# 中使用位操作移除标志。 他的方法是分解每个步骤,同时演示操作的长版本和短版本,并加强实践的重要性,这使本书成为使用二进制操作的开发人员的宝贵课程。

如果您有兴趣了解有关 C# 中二进制操作的更多信息,请务必查看 Tim 有关该主题的 完整系列,以获得更深入的见解!

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