独自のデザインでクリエイティブに使用する方法を知りたい場合は、独自のコードを調べて、囲んでいるブロックが終了する前に特定のコードを実行する必要がある状況を調べてください。これらは、try
/finally
またはusing
が役立つ状況です。
特に、すべての例外をキャッチしてこれを達成しようとした場合は、代わりにtry
/ finally
orに変更する必要があります。using
パターンが数回発生する場合は、パターンをキャプチャするために実装するクラスを作成し、ステートメントIDisposable
でパターンを呼び出すことができます。using
ただし、1 回限りのように見える特定のケースがある場合は、try
/を使用してfinally
ください。
この 2 つは非常によく似ており、 -は/using
で指定されていますが、 しかない場合でも、/を自分で構築できます。try
finally
using
try
finally
public class DisposeAnything : IDisposable
{
public Action Disposer;
public void Dispose()
{
Disposer();
}
}
今、あなたは言うことができます:
using (new DisposeAnything
{
Disposer = () => File.Delete(tempFileName)
})
{
// blah
}
これは次と同じです:
try
{
// blah
}
finally
{
File.Delete(tempFileName);
}
スコープを離れたときに実行するコードを取得する方法と考えてください。