1

变量userManagersignInManager都是可以实例化的类级实例成员,也可以为空。

替换它是否安全:

protected override void Dispose(bool disposing)
{
    if (disposing)
    {
        if (this.userManager != null)
        {
            this.userManager.Dispose();
            this.userManager = null;
        }

        if (this.signInManager != null)
        {
            this.signInManager.Dispose();
            this.signInManager = null;
        }
    }

    base.Dispose(disposing);
}

有了这个:

protected override void Dispose(bool disposing)
{
    if (disposing)
    {
        this.userManager?.Dispose();
        this.signInManager?.Dispose();
    }

    base.Dispose(disposing);
}

就我个人而言,我没有看到在处理它们之后将变量显式分配给 null 的意义,因为它们不是静态的,据我所知,它没有做任何事情。

4

2 回答 2

0

代码是安全的,因为它不能抛出空引用异常。但它不是 100% 等效的,因为您仍然需要在处理后将引用设置为 null。这可能并不重要,但在某些情况下,如果包含对象在被处理后仍留在范围内,它可以帮助垃圾收集器。

this.userManager?.Dispose();
this.userManager = null;
this.signInManager?.Dispose();
this.signInManager = null;
于 2015-09-05T23:39:24.197 回答
0

这个已经回答了

您不需要将对象设置为 null。当您处理对象时,它将由 GC(垃圾收集器)处理

于 2015-09-09T05:23:39.200 回答