gpt4 book ai didi

c# - 关于这两行代码如何工作的问题

转载 作者:太空宇宙 更新时间:2023-11-03 14:32:59 26 4
gpt4 key购买 nike

我正在阅读 this有关如何通过 C# 使用 AD 的文章。文章进行到一半时,出现了以下代码。

用户帐户属性是复选框。有谁知道下面的代码行将为选中的复选框返回什么?如果选中了 1 个以上的复选框怎么办?我原以为返回 bool 值会更直观?

//Add this to the create account method

int val = (int)newUser.Properties["userAccountControl"].Value;
//newUser is DirectoryEntry object

为什么我们做逻辑或下面?它如何在 int 和第二个值(是一个字节?)之间工作

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

我知道这听起来很幼稚......

谢谢

最佳答案

userAccountControl 属性包含两个字节的值,其中每一位都具有重要意义。如果该位打开,则使用某个选项 - 如果未打开,则该选项不存在。

这比拥有大量的 bool 值更紧凑,空间更优化。此外,许多“较旧的”Win16 和 Win32 API 只是以这种方式工作。

按位“与”运算符用于检查是否存在这样一个位:

if (newUser.Properties["userAccountControl"].Value & 0x400 == 0x400)

在这种情况下,设置了 0x400 位。

为了实际设置位,您使用按位“或”运算符:

newUser.Properties["userAccountControl"].Value = val | 0x800

这会设置“0x800”位。

这是基本的按位 bool 逻辑,真的。确实有点困惑 - 但 .NET 有一些帮助使事情变得更容易(例如,查看 BitArray 数据类型)

关于c# - 关于这两行代码如何工作的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2158276/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com