C#에서 [Flags] 열거형의 비트별 연산
플래그 열거형을 사용할 때 열거형 값 내의 개별 비트를 원활하게 관리하고 조작하려면 비트 작업을 마스터하는 것이 중요합니다. 이 치트 시트는 C#의 일반적인 비트 작업에 대한 간략한 개요를 제공하기 위한 것입니다.
특정 비트 설정
[Flags] 열거형에서 특정 비트를 설정하려면 비트별 OR 연산자(|)를 사용하세요. 다음 예를 고려해보세요.
<code class="language-csharp">FlagsEnum flags = FlagsEnum.None; flags |= FlagsEnum.Bit4; // 设置位 4</code>
특정 비트 제거
특정 비트를 제거하려면 비트 AND 연산자와 비트 부정을 사용하세요. 예를 들면 다음과 같습니다.
<code class="language-csharp">if ((flags & ~FlagsEnum.Bit4) == 0) { // 已移除位 4 }</code>
특정 비트 전환
특정 비트를 반대 값으로 전환하려면 비트 XOR 연산자(^)를 사용하세요.
<code class="language-csharp">flags ^= FlagsEnum.Bit4; // 切换位 4</code>
특정 비트가 설정되어 있는지 확인
특정 비트가 설정되었는지 확인하려면 비트 AND 연산자를 사용한 다음 비교하세요.
<code class="language-csharp">if ((flags & FlagsEnum.Bit4) == FlagsEnum.Bit4) { // 设置了位 4 }</code>
추가 확장 방법
사용자 정의 메서드로 System.Enum 클래스를 확장하면 비트 작업을 더욱 단순화할 수 있습니다. 다음 확장을 고려해보세요:
<code class="language-csharp">public static class EnumExtensions { public static bool Has<T>(this Enum type, T value) => (((int)(object)type & (int)(object)value) == (int)(object)value); public static T Add<T>(this Enum type, T value) => (T)(object)(((int)(object)type | (int)(object)value)); public static T Remove<T>(this Enum type, T value) => (T)(object)(((int)(object)type & ~(int)(object)value)); }</code>
이러한 방법은 비트 연산에 대한 편리한 단축키를 제공합니다.
<code class="language-csharp">SomeType value = SomeType.Grapes; value.Has(SomeType.Grapes); // true value = value.Add(SomeType.Oranges); value.Has(SomeType.Oranges); // true value = value.Remove(SomeType.Grapes); value.Has(SomeType.Grapes); // false</code>
위 내용은 C#의 플래그 열거형에 대해 비트별 연산을 수행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!