10

私はいくつかのサードパーティのコードを読んでいて、これを見つけました:

x.Flags = x.Flags ^ Flags.Hidden;

それは何をするためのものか?

'&'と'|'を使用しました ビット単位の「および」と「または」の列挙型ですが、その記号を見るのは初めてです...

4

4 に答える 4

22

^は、C#のビット単位のXOR演算子です。

編集:a ^ bは、aがtrueでbがfalseの場合、またはaがfalseでbがtrueの場合にtrueを返しますが、両方ではありません。

于 2008-10-24T18:37:07.647 に答える
16

これが「xor」演算子になります。サンプルコードでは、x.Flagsの現在の値に応じて、Flags.Hiddenをオンまたはオフに切り替えます。

この方法の利点は、設定されている他のフラグに影響を与えることなく、Flags.Hiddenの設定を変更できることです。

于 2008-10-24T18:40:31.183 に答える
2

ここから撮影:

整数型の場合、^はそのオペランドのビット単位の排他的論理和を計算します。ブールオペランドの場合、^はそのオペランドの論理排他的論理和を計算します。つまり、奇数のオペランドが真である場合にのみ、結果は真になります。

于 2008-10-24T18:37:57.707 に答える
2

これは排他的論理和(XOR)演算子であり、このリンクには使用例があります

http://weblogs.asp.net/alessandro/archive/2007/10/02/bitwise-operators-in-c-or-xor-and-amp-amp-not.aspx

于 2008-10-24T18:38:31.513 に答える