2015-04-20 118 views
-3

請幫忙。無法解決這個問題,因爲我缺乏編程知識。C#爲什麼不設置該變量?

public static void FileOutput(string path, bool rewrite, List<int> NumberOfWords) 
{ 
    StreamWriter OutPath; 
    try 
    { 
     OutPath = new StreamWriter(path, rewrite); 
    } 
    catch(IOException e) 
    { 
     Console.WriteLine(e.Message); 
    } 

    for(int i = 0; i < NumberOfWords; i++) 
    { 
     try 
     { 
      OutPath.Write(NumberOfWords[i]); 
     } 
     catch(IOException e) 
     { 
      Console.WriteLine(e.Message); 
     } 
    } 
    OutPath.Close(); 
} 
+0

截圖是不愉快:(如果你實際上可以在你的代碼粘貼這將是很好。 – miradulo

+1

你可以粘貼在這裏格式化你的代碼,請刪除圖像,並嘗試與SO文本編輯器打 – jean

+0

你在問什麼?需要更多細節 – tdbeckett

回答

3

你的問題是你實際設置你的OutPath變量在try-catch中。這意味着您的變量只能在try-catch的範圍內設置。試試這個,而不是

public static void FileOutput(string path, bool rewrite, List<int> NumberOfWords) 
{ 
    StreamWriter OutPath; 
    try 
    { 
     OutPath = new StreamWriter(path, rewrite); 

     for(int i = 0; i < NumberOfWords; i++) 
     { 
      try 
      { 
       OutPath.Write(NumberOfWords[i]); 
      } 
      catch(IOException e) 
      { 
       Console.WriteLine(e.Message); 
      } 
     } 
    OutPath.Close(); 
    } 
    catch(IOException e) 
    { 
     Console.WriteLine(e.Message); 
    } 
} 
+0

非常感謝!現在它完美地工作。 – erkatya90

+1

你的第一個陳述是不正確的。範圍是你聲明你的變量的地方,而不是你定義它的地方......但是把循環移到try {}是正確的方法,所以不要把你打倒。 –

+0

@ erkatya90如果您發現此問題有幫助,請將其標記爲已接受。謝謝。 –

相關問題