我以为我今天早上生气了,正准备开始自我剖析,但后来决定让其他人来看看我的一段代码,有两位同事证实我没有生气,或者我们都疯了。myVar = false将myVar设置为true?
我有下面的代码:
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(或者将它保留为假)。但是,不,在该行的断点处,我打了F10,它移到了上面代码的最后一行,突然间是sffff成员是真的。 GetValidUserGroups方法在此时尚未运行(并且不会更改该值)。
我为什么isStaffMember = false原因isStaffMember变得真实,我有些困惑。
任何人都看过这种奇怪的行为之前,并知道可能是什么原因造成的?
如果我将isStaffMember = false键入它的工作立即窗口,并将其设置为false。
这是多线程的代码? –
这段代码在哪里运行,你如何调试它?即被调试的代码正在运行的代码? – CodeCaster
添加大括号,以便调试器以更易读的方式标记当前行。 – BartoszKP