Initialize()メソッドとClose()メソッドの呼び出しを取り除き、usingブロックを置き換えるのに役立つ方法はありますか?
または、このアプローチは完全にOKですか?
(アイデアは、FooWriterのコンシューマーがいくつかの文字列を書き込み、これで終了したときにWriterが破棄されるようにすることです。)
class Program
{
static void Main(string[] args)
{
var writer = new FooWriter();
writer.Initialize();
foreach (var s in args)
writer.Write(s);
writer.Cose();
}
public class FooWriter
{
public StreamWriter Writer;
public void Initialize()
{
Writer = new StreamWriter("MyFile.txt", false);
}
public void Write(string line)
{
if(Writer==null)
throw new NullReferenceException(Writer, "Writer"); // Guard Writer
Writer.WriteLine(line);
}
public void Close()
{
Writer.Dispose();
}
}