12

列挙型を考えると:

[Flags]
enum foo
{
a = 1,
b = 2,
c = 4
}

それから

foo example = a | b;

fooにが含まれているかどうかわからない場合はc、以前は次のように書いています。

if (example & foo.c == foo.c)
    example  = example ^ foo.c;

foo.cinの存在を確認せずにこれを行う方法はありexampleますか?

追加に関しては、私はただ行うことができOR、列挙値がすでに存在する場合、exampleそれは問題ではありません。

4

2 に答える 2

26

私はあなたが欲しいと思います:

example &= ~foo.c;

つまり、のビットを除くすべてのビットを設定して、ビット単位の「AND」マスクを実行しますc

編集:あなたが書くことができるように、私はある時点で制約のないメロディーに「例外」を追加する必要があります:

example = example.Except(foo.c);

これがあなたの興味を引くかどうか教えてください、そして私は週末に何ができるかを見るでしょう...

于 2011-09-23T08:46:26.643 に答える
9

そしてそれをfoo.cの補数と一緒に:

example = example & ~foo.c
于 2011-09-23T08:47:50.940 に答える