gpt4 book ai didi

c# - 与 C# 'using' 混淆

转载 作者:太空狗 更新时间:2023-10-29 23:10:23 24 4
gpt4 key购买 nike

我看过一些使用 AD in this stackoverflow question 的代码

我对 using 语句感到困惑。我认为它只是用于您担心会发生内存泄漏的事情,例如 WebClient 或类似的...

无论如何:

using (var context = new PrincipalContext( ContextType.Domain )) 
{
using (var user = UserPrincipal.FindByIdentity( context, "username" ))
{
var groups = user.GetAuthorizationGroups();
...
}
}

当我到达 var groups = user.GetAuthorizationGroups() 行时 - 用户为空,因此该行失败并返回 NullReference。当我将鼠标悬停在它上面进行调试时,它显示 null,然后显示静态成员,并具有所有值。

如果我从 using 语句中取出一行,并且只使用 var user = UserPrincipal.FindByIdentity( context, "username") 用户根据需要填充。

这是怎么回事???

编辑:我填空并发送了一个虚假的用户名。奇怪的是,当我在调试期间检查变量时,如果我发送了伪造的用户 ID,您会期望用户完全为 null,但它显示在用户下:null,静态成员,并且有我当前登录的值 -所以我认为这可能与 using 语句有关。干杯!

最佳答案

您所描述的情况不会发生。 using 语句的特殊性在 block 完成之前不会发生,当对象被释放时。所以在该 block 内,user 变量是相同的,无论它是否在 using 语句中。

关于c# - 与 C# 'using' 混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6951362/

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