2013-04-17 75 views
4

我不明白OR語句在這個代碼示例中做了什麼。Visual basic:變量賦值與OR

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

DE.Properties(「UserAccountControl」)。Value表示小數。

枚舉是整數。

我知道這是代碼是用來在活動目錄中去激活用戶,但我不明白「OR」是如何在這裏工作的。

感謝

回答

5

or是按位操作。 C = A or B確保在C中的所有位被設置其在中B.設置

實施例:

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 
+0

謝謝你這個清晰完美的答案!乾杯! – rousseauo