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();
    }
}