1

変数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 に割り当てる意味がわかりません。変数は静的ではないため、私が知る限り、何もしません。

4

2 に答える 2

0

このコードは、null 参照例外をスローできないという意味で安全です。ただし、100% 同等というわけではありません。そのため、破棄後に参照を null に設定する必要があります。これはおそらく重要ではありませんが、場合によっては、オブジェクトが破棄された後もスコープ内にとどまると、ガベージ コレクターを助けることができます。

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