rou*_*auo 4 .net vb.net bit-manipulation active-directory bit
我不明白OR语句在这个代码示例中做了什么.
DE.Properties("UserAccountControl").Value = CInt(DE.Properties("UserAccountControl").Value) Or AccountOptionsEnum.UF_ACCOUNTDISABLE
Run Code Online (Sandbox Code Playgroud)
DE.Properties("UserAccountControl").值表示小数.
枚举是整数.
我知道这是代码用于在Active Directory中停用用户但我不明白"OR"在这里是如何工作的.
谢谢
或者是一个按位操作.C = A or B确保设置C中的所有位,这些位在A或 B中设置.
例:
01001001
or 00011000
--------
01011001
Run Code Online (Sandbox Code Playgroud)
AccountOptionsEnum.UF_ACCOUNTDISABLE可能是表单的值2^x,这意味着只设置了一个位.让我们假设它是右边的第四位:
00001000 = UF_ACCOUNTDISABLE
Run Code Online (Sandbox Code Playgroud)
该操作X = X or UF_ACCOUNTDISABLE确保在X中设置第四个位.如果之前已设置,则不会更改:
00011100 old X
or 00001000 UF_ACCOUNTDISABLE
--------
00011100 new X
Run Code Online (Sandbox Code Playgroud)
如果尚未设置,则将设置:
00010100 old X
or 00001000 UF_ACCOUNTDISABLE
--------
00011100 new X
Run Code Online (Sandbox Code Playgroud)
基本上,通常使用以下按位操作:
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
Run Code Online (Sandbox Code Playgroud)