在C#中执行(或反转)按位OR的反转

ser*_*0ne 6 .net c# bit-manipulation operators

如何|=在C#中执行按位OR()运算符的反转?我可以使用C#中的NOR按位运算符吗?

场景:

我从.NET框架继承了一个基类.该类具有设置标志的操作.

例: flags |= 0x200;

在我的派生类中,我想省略此标志设置,就好像操作flags |= 0x200;从未发生过一样.

有没有办法实现这个目标?

Dam*_*ver 8

您可以&使用~要删除的值的inverse()来AND():

flags &= ~0x200;
Run Code Online (Sandbox Code Playgroud)

如果您打算确保未设置此标志.如果您要撤消之前对此标志的更改,那么正如@Russell所说,XOR可能就是您所追求的.


Pho*_*cUK 5

您可以对标志进行异或以将其删除

flags ^= 0x200
Run Code Online (Sandbox Code Playgroud)

如果该标志关闭,该操作也将打开该标志.与掩码的异或表现为切换.