ホームページ >バックエンド開発 >C++ >C# 列挙型で設定されたフラグのみを反復処理するにはどうすればよいですか?

C# 列挙型で設定されたフラグのみを反復処理するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-26 21:53:13342ブラウズ

How to Iterate Over Only the Set Flags in a C# Enum?

フラグを使用して列挙型の値を反復処理する

質問:

フラグをサポートする列挙型。設定されている個々の単一ビット値を具体的に反復するにはどうすればよいですか。特定の変数? Enum.GetValues を使用して列挙型全体の反復処理を回避することはできますか?

答え:

はい、enum 変数内の個々のフラグ値を反復処理することは可能です。列挙型全体を列挙して値が設定されているかどうかを確認する必要はありません。これは、次のコード スニペットを使用して実現できます。

static IEnumerable<Enum> GetFlags(Enum input)
{
    foreach (Enum value in Enum.GetValues(input.GetType()))
        if (input.HasFlag(value))
            yield return value;
}

説明:

  1. GetValues メソッドは、指定された列挙型のすべての可能な値の配列を返します。 type.
  2. 配列内の各値について、HasFlag メソッドを使用して、入力にフラグが設定されているかどうかを確認します。
  3. フラグが設定されている場合、値は GetFlags メソッドから返されます。

このアプローチを使用すると、列挙型の個々のフラグ値を効率的に反復できます。変数。

以上がC# 列挙型で設定されたフラグのみを反復処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。