2012-08-02 33 views
1

與StreamWriter的問題,我想畫報保存在的StreamWriter從內容的文件,但在這個代碼SaveFileDialog使C#

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");

和一切工作的罰款!問題在哪裏? 謝謝!

+2

回到Visual Studio,按住CTRL鍵,然後按K,然後按D. IDE將重新格式化代碼,這會使問題彈出(如答案中所述,您錯過了代碼周圍的大括號應該是使用塊 – Alex 2012-08-02 11:54:50

回答

5

你只需要加括號:

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()的作用域規則相同,您已經正確使用它了。

+0

Thanks..huh ...也許我很累,我沒有看到這個小東西 – user1562839 2012-08-02 11:54:31

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! 
} 

當你不使用大括號,將只會看到代碼的第一下面一行。

+0

呃......我是noob:D – user1562839 2012-08-02 11:53:27

0

Using statement,當它定義了一個範圍,在該範圍的末尾將放置一個對象。見using Statement