ホームページ > バックエンド開発 > C++ > C# でフラグ列挙型に対してビット単位の操作を実行する方法

C# でフラグ列挙型に対してビット単位の操作を実行する方法

Patricia Arquette
リリース: 2025-01-13 11:44:43
オリジナル
944 人が閲覧しました

How to Perform Bitwise Operations on Flags Enums in C#?

C# の [Flags] 列挙のビット単位の操作

フラグ列挙を使用する場合、列挙値内の個々のビットをシームレスに管理および操作するためのビット操作をマスターすることが重要です。このチートシートは、C# での一般的なビット操作の概要を提供することを目的としています。

特定のビットを設定します

[Flags] 列挙に特定のビットを設定するには、ビットごとの OR 演算子 (|) を使用します。次の例を考えてみましょう:

FlagsEnum flags = FlagsEnum.None;
flags |= FlagsEnum.Bit4; // 设置位 4
ログイン後にコピー

特定のビットを削除します

特定のビットを削除するには、ビットごとの AND 演算子とビットの否定を使用します。以下に例を示します:

if ((flags & ~FlagsEnum.Bit4) == 0) {
    // 已移除位 4
}
ログイン後にコピー

特定のビットを切り替えます

特定のビットを反対の値に切り替えるには、ビットごとの XOR 演算子 (^) を使用します。

flags ^= FlagsEnum.Bit4; // 切换位 4
ログイン後にコピー

特定のビットが設定されているかどうかを確認します

特定のビットが設定されているかどうかを判断するには、ビットごとの AND 演算子を使用して比較します。

if ((flags & FlagsEnum.Bit4) == FlagsEnum.Bit4) {
    // 设置了位 4
}
ログイン後にコピー

追加の拡張メソッド

カスタム メソッドを使用して System.Enum クラスを拡張すると、ビット操作をさらに簡素化できます。次の拡張子を考えてみましょう:

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));
}
ログイン後にコピー

これらのメソッドは、ビット単位の演算に便利なショートカットを提供します。

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
ログイン後にコピー

以上がC# でフラグ列挙型に対してビット単位の操作を実行する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート