簡體   English   中英

在Dispose方法中清理類級別的變量

[英]Cleaning up class level variables in Dispose method

變量userManagersignInManager都是可以實例化的類級實例成員,或者可以為null。

替換此是否安全:

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是有意義的,因為據我所知,它們不是靜態的,它沒有任何作用。

從不能拋出空引用異常的意義上說,代碼是安全的。 但是它不是100%等效的,因為在處理后您仍然需要將引用設置為null。 這可能並不重要,但是在某些情況下,如果包含對象在處置后仍在范圍內,則可以幫助垃圾收集器。

this.userManager?.Dispose();
this.userManager = null;
this.signInManager?.Dispose();
this.signInManager = null;

這已經回答

您無需將對象設置為null。 當您處理對象時,它將由GC(垃圾收集器)處理

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM