ホームページ >バックエンド開発 >C++ >C#[flags] enum属性は、ビットワイズ操作でどのように機能しますか?

C#[flags] enum属性は、ビットワイズ操作でどのように機能しますか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-02-02 14:51:09220ブラウズ

How Does the C# [Flags] Enum Attribute Work with Bitwise Operations?

- c#列挙属性の[フラグ]の詳細な理解

c#では、可能性のある一連の可能性セットを定義する際に

属性が重要な役割を果たします。これらの列挙は通常、複数のオプションを同時に組み合わせて操作するために、位置の位置とともに使用されます。

[Flags] [フラグ]属性の役割属性は、単一の値ではなく、列挙値の組み合わせを示します。これにより:

ビット操作:ビットまたはオペレーター(| |)の使用を組み合わせて、複数のオプションを含めることができます。

読みやすい出力:

列挙された[Flags]メソッドのメソッドには、ユーザーにフレンドリーな表現を提供するコンマ分離アクティビティロゴリストを生成します。

  • 例の例次の列挙を検討してください:
  • 操作の動作 ToString()属性は、列挙値を自動的に設定しません。ビット操作の互換性を確保するには、2のパワーを値に手動で分配する必要があります。
エラー宣言:

正しいステートメント:

<code class="language-csharp">[Flags]
public enum Options
{
    None = 0,
    Option1 = 1,
    Option2 = 2,
    Option3 = 4,
    Option4 = 8
}</code>

検査ロゴの組み合わせを確認してください

メソッドを使用して、属性に特定の符号が含まれているかどうかを確認できます。

[Flags]ビットオペレーターを使用

を使用します .NET 4の前に、位置と運用シンボル(&)を使用して、ロゴの存在を確認できます。 基礎となるメカニズム:位置は

<code class="language-csharp">[Flags]
public enum MyColors
{
    Yellow,  // 0
    Green,   // 1
    Red,     // 2
    Blue     // 3
}</code>
を示します

列挙の値は、バイナリの形で表されます。 2のパワーを使用する場合、ポジショニングチャームは各ビットを操作します:

赤:
<code class="language-csharp">[Flags]
public enum MyColors
{
    Yellow = 1,
    Green = 2,
    Red = 4,
    Blue = 8
}</code>
00000100

グリーン:00000010

AldoctColors(Red | Green):HasFlag00000110

<code class="language-csharp">if (myProperties.AllowedColors.HasFlag(MyColor.Yellow))
{
    // 允许黄色...
}</code>

なし価値

通常、0

ロゴを備えた

ロゴは、位置と操作には適用されません。これは、結果が常に0になるためです。ただし、ロジック比較(==)を使用して、設定が少しあるかどうかを判断できます。
<code class="language-csharp">if ((myProperties.AllowedColors & MyColor.Yellow) == MyColor.Yellow)
{
    // 允许黄色...
}</code>

以上がC#[flags] enum属性は、ビットワイズ操作でどのように機能しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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