2010-01-28 51 views
2

我在閱讀this關於如何通過C#使用AD的文章。介紹文章的一半,提供了下面的代碼。關於這兩行代碼如何工作的問題

用戶帳戶屬性是複選框。有沒有人有任何想法下面的代碼行將返回一個選中的複選框?如果選中多個複選框會怎樣?我以爲一個布爾被返回會更直觀?

​​

爲什麼我們要做邏輯或以下?它是如何一個int和第二值之間的工作(這是一個字節?)

newUser.Properties["userAccountControl"].Value = val | 0x80000; 
//ADS_UF_TRUSTED_FOR_DELEGATION 

我知道這聽起來很幼稚......

感謝

+0

這不是一個邏輯'或',這是一個按位。 – 2010-01-28 22:04:12

回答

1

userAccountControl屬性包含一個雙字節的值,其中每個單獨的位具有重要含義。如果該位打開,則使用某個選項 - 如果該位未打開,則該選項不存在。

這比擁有數量龐大的布爾值更緊湊,空間更優化。此外,許多「較老」的Win16和Win32 API只是簡單地以這種方式工作。

按位 「AND」 操作符用於檢查這樣的單個比特的存在:

如果(newUser.Properties [ 「userAccountControl的」]值& 0x400的== 0x400的。)

在這種情況下,0x400位被設置。

爲了實際設置了一下,您使用按位 「或」 運算符:

newUser.Properties [ 「userAccountControl的」]值= VAL | 0x800

這設置「0x800」位。

這是基本的按位布爾邏輯,真的。有點混亂,但 - NET有一些幫助,使事情變得更容易一些(例如檢查BitArray數據類型)

0

根據您提供的信息,我猜測他們正在使用標誌類型系統來指示所選項目。每個選項都有一個特定的值,並將它們相加,以便您可以取回選定的值。

這將通過邏輯證明或用於查看是否包含特定值。