我有以下代码,它基本上返回用户的显示名称。我正在使用using关键字来正确处理PrincipalContext
和UserPrincipal
。
我的问题是,一旦放置user.DisplayName
,结果指向UserPrincipal
将导致指向空或处置对象。我不认为使用立即处理对象只是标记为一次性,一旦它需要更多的内存它就处理标记的对象。
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;
}
答案 0 :(得分:1)
结果指向user.DisplayName
不,不。
user.DisplayName
中存储的值被复制到result
。你返回的只是那个值,然后与user
对象无关。
您可以使用以下内容演示此概念:
var first = "one";
var second = first;
second = "two";
// here, "first" still equals "one"