我已经看到围绕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,
因此,我们考虑在这种情况下,我们具有“复制”和“移动”的组合,即,值将为:
00000011
通过按位移动,我们有:
00000011 -->Copy | Move
00000010 -->Move
======== &
00000010 === Move
关于c# - 在这种情况下使用按位与(&),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30616403/