在C#中正确处理用户主体
本文关键字:用户主体 正确处理 | 更新日期: 2023-09-27 18:28:14
我有下面的代码,它基本上为用户返回显示名称。我正在使用using关键字来正确处理PrincipalContext
和UserPrincipal
。
我的问题是,由于结果指向user.DisplayName
,一旦UserPrincipal
被释放,结果将指向null或被释放的对象。我不认为立即使用处置对象只会标记为一次性,一旦需要更多内存,就会处置标记的对象。
private string GetWindowsDisplayName()
{
string result = string.Empty;
using (PrincipalContext context = new PrincipalContext(ContextType.Domain))
{
using (UserPrincipal user = UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, principal.Identity.Name))
{
if (user != null)
result = user.DisplayName;
}
}
return result;
}
结果指向用户。DisplayName
不,没有。
存储在user.DisplayName
中的值被复制到result
。您返回的只是那个值,到那时它与user
对象无关。
你可以用这样的东西来演示这个概念:
var first = "one";
var second = first;
second = "two";
// here, "first" still equals "one"