我已经看到一些关于 SO(here 等)的 &
的解释(以及大量的 |
的解释),但没有一个阐明了&
在以下场景中:
else if ((e.AllowedEffect & DragDropEffects.Move) == DragDropEffects.Move) {...}
取自MSDN
谁能解释一下,具体到这个用法?
谢谢。
最佳答案
e.AllowedEffect
可能是按位标志的组合。 &
运算符对每一位执行一点“与”逻辑运算。结果,如果被测位为 1,则结果为该单个标志。
测试可以用这种方式编写,结果完全相同:
else if ((e.AllowedEffect & DragDropEffects.Move) != 0 ) {...}
让我们用一个例子更好地解释,标志值是这些:
None = 0,
Copy = 1,
Move = 2,
Link = 4,
所以在二进制中:
无 = 00000000,
Copy = 00000001,
Move = 00000010,
Link = 00000100,
所以我们考虑在测试中我们有 Copy 和 Move 组合的情况,即值将是:
00000011
通过按位和移动我们有:
00000011 -->Copy | Move
00000010 -->Move
======== &
00000010 === Move
关于c# - 在这种情况下使用按位与 (&),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30616403/