2

ストリームライターのコンテンツからファイルをビルド保存したいのですが、このコードでは

SaveFileDialog savefile = new SaveFileDialog();
                savefile.FileName = "unknown.txt";
                savefile.Filter = "Text files (*.txt)|*.txt|All files (*.*)|*.*|";
                if (savefile.ShowDialog() == DialogResult.OK)
                {
                    using (StreamWriter sw = new StreamWriter(savefile.FileName, false, System.Text.Encoding.Unicode))
                    sw.WriteLine("Test line");
                    sw.WriteLine("Test line2");
                    sw.WriteLine("Test line3");
                }

sw.WriteLine("Test line2"); sw.WriteLine("Test line3");で、エラーです、sw存在しませんでした!

しかし、コードを使用することはめったにありません

using (StreamWriter sw = new StreamWriter("\unknow.txt", false,System.Text.Encoding.Unicode)) sw.WriteLine("Test line"); sw.WriteLine("Test line2"); sw.WriteLine("Test line3");

そして、すべてうまくいきます!問題はどこですか?ありがとう !

4

3 に答える 3

6

中括弧を追加するだけです:

using (StreamWriter sw = new StreamWriter(savefile.FileName, 
          false, System.Text.Encoding.Unicode))
{
     sw.WriteLine("Test line");
     sw.WriteLine("Test line2");
     sw.WriteLine("Test line3");
}

変数swは、using()ステートメントのスコープに対してローカルです。最初の WriteLine() だけだった中かっこなし。

のスコープ規則using()は と同じif()です。既に正しく使用しています。

于 2012-08-02T11:50:32.633 に答える
3

次のようにしてみてください。

SaveFileDialog savefile = new SaveFileDialog();
savefile.FileName = "unknown.txt";
savefile.Filter = "Text files (*.txt)|*.txt|All files (*.*)|*.*|";

if (savefile.ShowDialog() == DialogResult.OK)
{
    using (StreamWriter sw = new StreamWriter(savefile.FileName, false, System.Text.Encoding.Unicode))
      { // You are missing this one.. 
                    sw.WriteLine("Test line");
                    sw.WriteLine("Test line2");
                    sw.WriteLine("Test line3");
       } //.. and this one!
 }

中括弧を使用しない場合、次のコードの最初の行のみが表示されます。

于 2012-08-02T11:51:23.327 に答える
0

Using statement、最後にオブジェクトが破棄されるスコープを定義する場合。ステートメントの使用を参照してください。

于 2012-08-02T11:56:17.817 に答える