私のアプリケーションには、次のようなファイルに定期的に行を書き込む非常に単純なロギングメカニズムがあります(ロギングライブラリは私のニーズには過剰です)。
private string logfile = @"C:\whatever.log";
public void WriteLine(string line)
{
using(FileStream fs = File.Open(logfile, FileMode.Append))
{
// Log Stuff
}
}
そのため、そのメソッドを呼び出すたびに、新しい FileStream が作成され、ログが終了した後に破棄されます。そこで、新しいオブジェクトが継続的に作成されるのを防ぐために、既にインスタンス化されたオブジェクトを使用することを検討しました。
private string logfile = @"C:\whatever.log";
private FileStream myStream = File.Open(logfile, FileMode.Append);
public void WriteLine(string line)
{
using(myStream)
{
// Log Stuff
}
}
ただし、スコープの問題により、MSDN リファレンスはこれ (最後の例) を推奨していません。その場合、人は何をしますか?最初の例のオーバーヘッドは無視できますか?