[英]Cleaning up class level variables in Dispose method
變量userManager
和signInManager
都是可以實例化的類級實例成員,或者可以為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.