0

クラスList<string>でファイルに書き込もうとしています。StreamWriter(デバッグモードで)引数をwrite_lines()関数に渡すと、プログラムはエラーなしで停止します。多分誰かが私が間違っていることの手がかりを持っています

    public class Writer
{
    private StreamWriter the_writer;
    private string PS_filepath;

    public Writer()
    {

    }

    public void write_lines(List<string> thelines, string path)
    {
        this.PS_filepath = path;
        this.the_writer = new StreamWriter(PS_filepath, true);

        foreach(string line in thelines)
        {
            the_writer.WriteLine(line);
        }
    }
}

Path var is C:\path\text.xyz

4

1 に答える 1

3

ライターはローカルに作成されますが、適切に閉じられることはありません。

変数をインスタンスに格納する理由はありません。そのため、メソッド全体を単純に静的にすることができます。

public static void write_lines(List<string> thelines, string path)
{
    //this.PS_filepath = path;
    using (StreamWriter writer = new StreamWriter(path, true))
    {
      foreach(string line in thelines)
      {
          writer.WriteLine(line);
      }
    }
}

これusingにより、ファイルが閉じられます (したがって、完全に書き込まれます)。その他の変更点は、ほんの小さな改善です。

于 2012-07-28T18:45:51.503 に答える