4

我不明白 OR 语句在此代码示例中的作用。

DE.Properties("UserAccountControl").Value = CInt(DE.Properties("UserAccountControl").Value) Or AccountOptionsEnum.UF_ACCOUNTDISABLE

DE.Properties("UserAccountControl").Value 表示小数。

枚举是整数。

我知道这是用于停用 Active Directory 中的用户的代码,但我不明白“OR”在这里是如何工作的。

谢谢

4

1 回答 1

5

或者是按位运算。C = A or B确保设置 C 中的所有位,这些位在 AB

例子:

   01001001
or 00011000
   --------
   01011001

AccountOptionsEnum.UF_ACCOUNTDISABLE可能是形式的值2^x,这意味着只设置了一个位。让我们假设它是右边的第四位:

00001000   = UF_ACCOUNTDISABLE

该操作X = X or UF_ACCOUNTDISABLE确保在 X 中设置了第四位。如果之前已设置,则不会发生任何变化:

   00011100 old X
or 00001000 UF_ACCOUNTDISABLE
   --------
   00011100 new X

如果尚未设置,则会设置:

   00010100 old X
or 00001000 UF_ACCOUNTDISABLE
   --------
   00011100 new X

基本上,通常使用以下按位运算:

X = X or FLAG         ' sets FLAG in X
X = X and not FLAG    ' removes FLAG from X
X = X xor FLAG        ' toggles FLAG in X
if (X and FLAG) <> 0  ' checks if FLAG is set in X
于 2013-04-17T20:57:30.627 回答