ホームページ > バックエンド開発 > C++ > c#[flags] enum属性は、ビットワイズ操作と列挙の読み取り可能性をどのように強化しますか?

c#[flags] enum属性は、ビットワイズ操作と列挙の読み取り可能性をどのように強化しますか?

Barbara Streisand
リリース: 2025-02-02 14:56:10
オリジナル
486 人が閲覧しました

How Does the C# [Flags] Enum Attribute Enhance Bitwise Operations and Enumeration Readability?

[flags] [ c#:その役割を理解する

の列挙属性 C#で列挙を定義する場合、列挙が単一の値ではなく値のセットを表す場合、[Flags]プロパティを使用できます。この属性は、使用演算子の列挙に特に役立ちます。

[フラグ]属性の重要性普遍的な誤解とは対照的に、[flags]属性は、

メソッドを介してより読みやすい表現フォームを提供します。 [フラグ]でマークされた列挙は、その値を出力し、値は以下に示すように表示されます 2 [Flags]属性が列挙に2の電力値を自動的に割り当てないことを強調する必要があります。値の値がスキップされている場合、デフォルト値が0から増加するため、位置の操作の保持が正しくありません。

.ToString()正しいステートメント:

enum Suits { Spades = 1, Clubs = 2, Diamonds = 4, Hearts = 8 }
[Flags] enum SuitsFlags { Spades = 1, Clubs = 2, Diamonds = 4, Hearts = 8 }

...

var str1 = (Suits.Spades | Suits.Diamonds).ToString(); // "5"
var str2 = (SuitsFlags.Spades | SuitsFlags.Diamonds).ToString(); // "Spades, Diamonds"
ログイン後にコピー

<取>異なる値を取得する:

列挙属性の異なる値を取得するには、複数の方法を使用できます。

使用<。>(。ネット4以下のバージョンが利用可能):

[Flags]
public enum MyColors
{
    Yellow = 1,
    Green = 2,
    Red = 4,
    Blue = 8
}
ログイン後にコピー

ポジション演算子を使用します(.NET 4の前):

    <底>基礎となるメカニズム
  • .HasFlag()[Flags]プロパティは、ビットコンピューティングによって動作することにより、バイナリ値を動作させることができます。 2の電力値を列挙値として使用することにより、値の基礎となるバイナリは、効率的で意味のある計算を可能にすることを意味します。

    たとえば、属性がBITまたは|の操作シンボルを赤、緑、青にしてバイナリを使用する場合、許可されたColorsはバイナリ00001110を保存します。
      if (myProperties.AllowedColors.HasFlag(MyColor.Yellow))
      {
          // Yellow is allowed...
      }
    ログイン後にコピー
  • none = 0 value
  • いくつかの列挙では、0の値(通常は「none」と呼ばれます)が含まれています。ただし、None値に関係する位置と操作は常に0を返すことに注意する必要があるため、特定の兆候のテストには適していません。論理比較を使用できます。
      if ((myProperties.AllowedColors & MyColor.Yellow) == MyColor.Yellow)
      {
          // Yellow is allowed...
      }
    ログイン後にコピー
    [Flags]属性、その使用モード、および設計モードに関する詳細情報とリソースについては、MSDNドキュメントを参照してください。

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

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