StreamWritermgraph
をprocess()
メソッドに渡します
static void Main(string[] args)
{
// The id and m_graph_file fields are static.
// No need to instantiate an object
gen.id = args[1];
gen.m_graph_file = @"msgrate_graph_" + gen.id + ".txt";
StreamWriter mgraph = new StreamWriter(gen.m_graph_file);
process(mgraph);
}
public static void process(StreamWriter sw)
{
// use sw
}
ただし、コードには理解しにくい点がいくつかあります。
gen
2 つの静的変数を使用してクラスを宣言します。これらの変数は、gen のすべてのインスタンス間で共有されます。これが望ましい目的であれば問題ありませんが、私は少し当惑しています。
- メイン メソッドで StreamWriter を開きます。静的な m_grph_file を考えると、これは実際には必要ではなく、コードで例外が発生した場合のクリーンアップが複雑になります。
たとえば、gen クラス (または別のクラス) では、ファイル名がクラス gen で静的であるため、同じファイルで動作するメソッドを作成できます。
public static void process2()
{
using(StreamWriter sw = new StreamWriter(gen.m_graph_file))
{
// write your data .....
// flush
// no need to close/dispose inside a using statement.
}
}