の列挙属性 C#で列挙を定義する場合、列挙が単一の値ではなく値のセットを表す場合、[Flags]プロパティを使用できます。この属性は、使用演算子の列挙に特に役立ちます。
メソッドを介してより読みやすい表現フォームを提供します。 [フラグ]でマークされた列挙は、その値を出力し、値は以下に示すように表示されます
2 [Flags]属性が列挙に2の電力値を自動的に割り当てないことを強調する必要があります。値の値がスキップされている場合、デフォルト値が0から増加するため、位置の操作の保持が正しくありません。
<取>異なる値を取得する: 列挙属性の異なる値を取得するには、複数の方法を使用できます。
使用<。>(。ネット4以下のバージョンが利用可能):
ポジション演算子を使用します(.NET 4の前):
.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"
[Flags]
public enum MyColors
{
Yellow = 1,
Green = 2,
Red = 4,
Blue = 8
}
<底>基礎となるメカニズム
.HasFlag()
[Flags]プロパティは、ビットコンピューティングによって動作することにより、バイナリ値を動作させることができます。 2の電力値を列挙値として使用することにより、値の基礎となるバイナリは、効率的で意味のある計算を可能にすることを意味します。 if (myProperties.AllowedColors.HasFlag(MyColor.Yellow))
{
// Yellow is allowed...
}
if ((myProperties.AllowedColors & MyColor.Yellow) == MyColor.Yellow)
{
// Yellow is allowed...
}
以上がc#[flags] enum属性は、ビットワイズ操作と列挙の読み取り可能性をどのように強化しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。