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中文網其他相關文章!