1

コンストラクターですでにSuppressFinalizeを呼び出しているDataTableなどのクラスがいくつかあるため、dispose /useusingを呼び出す意味はありません。(disposeは以前にリリースするためのものですが、リリースするものがないため)

だから、私はそのようなクラスのリスト、またはリフレクションによってそのようなクラスのリストを見つける方法を知りたいですか?

4

1 に答える 1

6

あなたの質問は無効な仮定をしています。呼び出しSuppressFinalizeは の有用性には関係ありませんDispose。Dispose メソッドは、明示的にまたはusingブロックを介して呼び出すと、そこに書かれていることは何でも実行します。

通常、Dispose は SupressFinalize を呼び出しますが、これは、典型的な Dispose パターンに従うと、Dispose がファイナライザーから実行されるコードを実行するためです。コードは既に実行されているため、比較的高価な操作であるファイナライズの必要はありません。そのため、Dispose は SupressFinalize を呼び出します。

于 2011-10-25T04:23:01.010 に答える