我以为我今天早上要疯了,正要剖析自己,但后来决定让别人帮我看一段代码,2 位同事确认我没有生气,或者我们是都疯了。
我有以下代码:
bool isStaffMember = false;
using (var uam = new ReadOnlyADUserAccountManager(adUser.Domain.ShortName))
{
var props = uam.GetLocalUserProperties(adUser, new string[] { "IsStaff" });
if (props.Count > 0 && props.ContainsKey("IsStaff") && props["IsStaff"] != null && props["IsStaff"].Value.ToString() == "1")
isStaffMember = true;
else
isStaffMember = false;
}
var validGroups = GetValidUserGroups(adUser.Sid);
出于某种原因,我发现当到达最后一行代码时,isStaffMember 总是正确的。所以我设置了一些断点。
单步执行时,isStaffMember 保持默认值为 false,直到它碰到行“isStaffMember = false;”为止。现在,对我来说,我相当肯定,应该将 isStaffMember 设置为 false(或将其保留为 false)。但是不,在该行的断点下,我按 F10,它移动到上面代码的最后一行,突然 isStaffMember 为真。GetValidUserGroups 方法此时尚未运行(无论如何也不会更改该值)。
我对为什么 isStaffMember = false 导致 isStaffMember 变为 true 感到有些困惑。
任何人以前见过这种奇怪的行为并知道可能导致它的原因吗?
如果我在立即窗口中输入 isStaffMember = false ,它就可以工作,并将其设置为 false。