1

私はこのコードを持っています:-

using (System.Security.Cryptography.SHA256 sha2 = 
    new System.Security.Cryptography.SHA256Managed())
{ .. }

その破棄スコープを離れる直前に、このコード行を配置する必要がありますか..またはすでに破棄の「呼び出し」を行いますか。

sha2.Clear();
4

5 に答える 5

3

私の知る限り、 Clear() メソッドは Dispose を呼び出すだけなので、 using ブロックは、使用されているリソースが確実に解放されるようにするのに十分なはずです。

于 2008-11-30T11:11:14.443 に答える
1

Reflector を使用して見てみると、 をClear呼び出すだけであることがわかるDisposeため、例で呼び出す必要はありませんClear

フレームワーク クラスの多くは、Close/ Clear/Whatever カバーを提供Disposeして、使用法をもう少し簡単にします。

于 2008-11-30T12:46:42.220 に答える
1

私見 Dispose() を呼び出すだけではオブジェクトを破棄できない場合は、コードに重大なバグがあるか、設計に重大な欠陥があります。したがって、独自のコードで追加の手順を実行する必要はありません。

于 2008-11-30T11:28:59.383 に答える
0

そして、一般的な役立つヒント - これらすべてのソースが最近利用可能であることを忘れないでください - 推測や推測をしなくても、この種の質問に答えるのに役立つことがよくあります.

これは開始するのに適した場所です: http://www.codeplex.com/NetMassDownloader

于 2008-11-30T11:33:09.733 に答える
-2

Dispose() で十分です。

.NET の仕組みがわかりません。ただし、追加関数呼び出しまたは「set null」は、Java でのパフォーマンスを低下させます。

CLR/Java VM は、次のガベージ コレクションで参照解除されたすべての管理対象オブジェクトを「ルート」からクリーンアップできるようになります (必要があります)。

PS。Dispose() は、「管理されていない」リソースをクリーンアップして、Finalizer スレッドが完了するのを待たないため、GC のパフォーマンスを向上させます。

于 2008-11-30T11:57:28.437 に答える