C#枚举的常用位运算
位运算允许高效地操作枚举中单个位,这对于管理标志型值非常有效。以下是用C#语法对标记为[Flags]
属性的枚举进行常用运算的示例:
设置位
<code class="language-csharp">FlagsEnum flags = FlagsEnum.None; flags |= FlagsEnum.Bit4; // 设置位4</code>
清除位
<code class="language-csharp">flags &= ~FlagsEnum.Bit4; // 清除位4</code>
切换位
<code class="language-csharp">flags ^= FlagsEnum.Bit4; // 切换位4 (已设置则清除,已清除则设置)</code>
测试位
<code class="language-csharp">if ((flags & FlagsEnum.Bit4) != 0) // 测试位4是否已设置</code>
使用扩展方法
为了简化位运算,您可以使用自定义扩展方法:
<code class="language-csharp">namespace EnumExtensions { public static class EnumerationExtensions { public static bool Has<T>(this Enum type, T value) => ((int)type & (int)value) == (int)value; // ... 其他扩展方法 } }</code>
扩展方法的使用
<code class="language-csharp">SomeType value = SomeType.Grapes; bool isGrapes = value.Is(SomeType.Grapes); // true bool hasGrapes = value.Has(SomeType.Grapes); // true</code>
以上是如何在 C# 枚举上高效使用按位运算?的详细内容。更多信息请关注PHP中文网其他相关文章!