フラグを含む次の列挙型があるとします。列挙型フラグのビット演算
[Flags]
public enum MyFlag
{
None = 0,
Foo = 1 << 0,
Bar = 1 << 1,
Baz = 1 << 2,
Quuz = 1 << 3
}
そして、あなたは新しいものと古いインスタンス化:
var newF = MyFlag.Foo | MyFlaq.Quuz; // 1001
var oldF = MyFlag.Foo | MyFlag.Baz; // 0101
私の最初の質問:どのようにXORフラグを取得し、新旧の上にビット演算を実行するためには?
var xor = ????? // -> should be 1100
追加の質問:そのXORフラグを使用して追加フラグと削除フラグを計算する方法は?
MyFlag added = ????? // Do something with new and xor -> should result in : 1000
MyFlag removed = ????? // Do same thing with old and xor -> should result in: 0100
これを紙面に手動で行うのは簡単です。
この権利のために利用できるビット演算のいくつかの種類があるはず?私に答えを示してください、私はそれを私のスキルセットに加えます! :-)
の答えは以下のとおりです。
var xor = newF^oldF;
var added = newF & xor;
var removed = oldF & xor;
なぜYはありません私はちょうど "C#ビットワイズ演算子"のためのGoogle? –
'^':例: 'var xor = @new^old;' 'new'はC#のキーワードであるので、名前を使うときは' @ new'としてください。 –
SOはこの種の質問をする形式ではありません。 [documentation](https://msdn.microsoft.com/en-us/library/17zwb64t.aspx)を参照してください。 – dlatikay