在C#中正确处置用户主体

时间:2015-12-28 20:08:17

标签: c#

我有以下代码,它基本上返回用户的显示名称。我正在使用using关键字来正确处理PrincipalContextUserPrincipal

我的问题是,一旦放置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;
}

1 个答案:

答案 0 :(得分:1)

  

结果指向user.DisplayName

不,不。

user.DisplayName中存储的复制result。你返回的只是那个值,然后与user对象无关。

您可以使用以下内容演示此概念:

var first = "one";
var second = first;
second = "two";
// here, "first" still equals "one"