Stream、StreamReader、StreamWriter などのストリーム オブジェクトを操作する場合、オブジェクト破棄の適切なアプローチを検討することが重要です。 Close() メソッドと Dispose() メソッドは両方とも使用できますが、その使用法に関するセマンティクスと規則は異なります。
Close() メソッド
Close() メソッドは、バッファリングされたデータをストリームからフラッシュし、使用しているシステム リソースを解放します。これは一般的な操作であり、即時ライトバックを強制することでデータの整合性を確保するのに役立ちます。
Dispose() メソッド
Dispose() メソッドは IDisposable インターフェイスに従い、管理対象リソースのクリーンアップを目的としています。これは、保護された Dispose(bool disposing) メソッドを呼び出します。このメソッドは、内部で Close() を呼び出し、管理リソースの解放などの追加のクリーンアップ タスクを実行します。
検査されたコードによるReflector.NET を使用すると、StreamReader および StreamWriter の Close() メソッドが内部で Dispose(true) を呼び出します。したがって、どちらかのメソッドを呼び出すと、フラッシュ操作とクリーンアップ操作の両方がトリガーされます。
Close() と Dispose() の理解に基づいて、推奨されるベスト プラクティスは、両方のメソッドを次のように使用することです。
using (var stream = ...) { // Perform operations on the stream stream.Close(); }
このアプローチは、両方の利点を組み合わせたものです。メソッド:
質問で参照されている MSDN の例では、using() を使用せずに Close() を使用しています。これは有効ではありますが、時代遅れのアプローチです。上記で説明した推奨プラクティスにより、コードの可読性と安全性が向上します。
以上がClose() または Dispose(): C# でのストリーム オブジェクトの破棄のベスト プラクティスは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。