私はいくつかのサードパーティのコードを読んでいて、これを見つけました:
x.Flags = x.Flags ^ Flags.Hidden;
それは何をするためのものか?
'&'と'|'を使用しました ビット単位の「および」と「または」の列挙型ですが、その記号を見るのは初めてです...
^は、C#のビット単位のXOR演算子です。
編集:a ^ bは、aがtrueでbがfalseの場合、またはaがfalseでbがtrueの場合にtrueを返しますが、両方ではありません。
これが「xor」演算子になります。サンプルコードでは、x.Flagsの現在の値に応じて、Flags.Hiddenをオンまたはオフに切り替えます。
この方法の利点は、設定されている他のフラグに影響を与えることなく、Flags.Hiddenの設定を変更できることです。
ここから撮影:
整数型の場合、^はそのオペランドのビット単位の排他的論理和を計算します。ブールオペランドの場合、^はそのオペランドの論理排他的論理和を計算します。つまり、奇数のオペランドが真である場合にのみ、結果は真になります。
これは排他的論理和(XOR)演算子であり、このリンクには使用例があります