> 백엔드 개발 > C++ > C# [플래그] 열거형에서 비트 연산을 수행하는 방법은 무엇입니까?

C# [플래그] 열거형에서 비트 연산을 수행하는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2025-01-13 11:37:44
원래의
716명이 탐색했습니다.

How to Perform Bitwise Operations on C# [Flags] Enums?

C# [Flags] 열거형을 사용하여 비트 연산 수행

[Flags] 속성이 있는 열거형을 사용하면 기본 정수 표현의 개별 비트를 조작할 수 있습니다. 이를 통해 각 비트가 특정 플래그나 옵션을 나타내는 비트 마스크를 간결하게 표현할 수 있습니다.

비트 설정

[Flags] 열거형에 비트를 설정하려면 비트별 OR 연산자(|)를 사용하세요.

<code class="language-csharp">flags = flags | FlagsEnum.Bit4; // 设置位 4</code>
로그인 후 복사

시험 위치

비트가 설정되었는지 테스트하려면 비트 AND 연산자(&)를 사용하세요.

<code class="language-csharp">bool isBit4Set = (flags & FlagsEnum.Bit4) != 0;</code>
로그인 후 복사

위치 전환

비트를 전환하려면(설정되지 않은 경우 설정, 설정된 경우 해제) 비트별 XOR 연산자(^)를 사용합니다.

<code class="language-csharp">flags = flags ^ FlagsEnum.Bit4; // 切换位 4</code>
로그인 후 복사

비트 지우기

비트를 지우려면 비트 AND 연산자(&)와 비트 마스크의 보수를 사용하세요.

<code class="language-csharp">flags = flags & ~FlagsEnum.Bit4; // 清除位 4</code>
로그인 후 복사

사용자 정의 확장 방법

편의를 위해 다음 확장 메서드를 정의하여 이러한 작업을 단순화할 수 있습니다.

<code class="language-csharp">public static bool Has<T>(this System.Enum type, T value) {
    return (((int)(object)type & (int)(object)value) == (int)(object)value);
}

public static bool Is<T>(this System.Enum type, T value) {
    return (int)(object)type == (int)(object)value;
}

public static T Add<T>(this System.Enum type, T value) {
    return (T)(object)(((int)(object)type | (int)(object)value));
}

public static T Remove<T>(this System.Enum type, T value) {
    return (T)(object)(((int)(object)type & ~(int)(object)value));
}</code>
로그인 후 복사

이러한 확장 방법은 다음과 같이 사용할 수 있습니다.

<code class="language-csharp">SomeType value = SomeType.Grapes;
bool isGrapes = value.Is(SomeType.Grapes); // true
bool hasGrapes = value.Has(SomeType.Grapes); // true

value = value.Add(SomeType.Oranges);
value = value.Add(SomeType.Apples);
value = value.Remove(SomeType.Grapes);

bool hasOranges = value.Has(SomeType.Oranges); // true
bool isApples = value.Is(SomeType.Apples); // false
bool hasGrapes = value.Has(SomeType.Grapes); // false</code>
로그인 후 복사

위 내용은 C# [플래그] 열거형에서 비트 연산을 수행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿