4

一連のフラグでフラグを取得したかどうかを確認する方法はありますか?

例:

[Flags]
Enum TestEnum
{
  ALIVE, DEAD, ALMOSTDEAD, HURT, OTHERS

}
// check if is alive and has been hurt
TestEnum aTest = TestEnum.ALIVE | TestEnum.HURT
bool aTest2 = aTest.HasFlag(TestEnum.ALIVE)

ただしa.Test.HasFlag、TestEnum.ALIVE がなくても、常に true を返します。

4

5 に答える 5

1

これをフラグとして使用したい場合は、宣言が間違っていると思います。こちらの以前の投稿をご覧ください。デフォルトの増分のため、値を 2 の累乗に設定しない限り、HasFlag は期待どおりに機能しません。

[Flags] Enum 属性は C# で何を意味しますか?

于 2013-10-18T20:30:17.463 に答える
0

あなたはゲームを作っていると思うので、この問題のクラスを作成する必要があります

public class Player
{
    bool isAlive;
    bool isHurt;
...
}

後で、次のように状態を確認できます。

if (player.isAlive && player.isHurt)
{
 //dosomething
}
于 2013-10-18T20:30:32.890 に答える
0

次のようなビット単位の操作を実行できます。

var alive = TestEnum.Alive;
var hurt = TestEnum.Hurt;
var aliveAndHurt = alive & hurt;
于 2013-10-18T20:30:39.583 に答える
-1

Enum.HasFlagを使用してこれを確認できます。

bool aTest2 = aTest.HasFlag(TestEnum.ALIVE);
于 2013-10-18T20:29:10.177 に答える