列挙子を複数組み合わせて使用できるようにする - Visual C# プログラミング

PROGRAM


列挙子を複数組み合わせて使用できるようにする

Visual C# で、複数個の列挙子を組み合わせて使用できるような列挙型を宣言したい場合には、次のようにします。

[Flags]

public enum DirectionEnum

{

None = 0,

North = 1,

South = 2,

East = 4,

West = 8

}

このように、列挙型 enum の宣言の前に [Flags] という属性を指定することで、次のような感じで、複数の列挙子を論理演算で連結することができるようになりました。

DirectionEnum values = DirectionEnum.North | DirectionEnum.East

このように論理演算を使って複数の列挙子を連結した場合、内部的には列挙型の宣言のところで定義した数値を論理演算しているのと同じなので注意が必要です。

その性質も加味して、論理和を取った際に衝突しないように、列挙子の各値を決定して行く必要があります。ただし、例えば "NorthEast" を 5 とするように、敢えてぶつけてしまうことで、わざわざ "North | East" と連結しないで済むようにも、工夫することができます。

 


[ もどる ]