2017-07-13 8 views
1

変数が必要なときに存在することをVisual Studioに伝える方法を教えてください。ここに私のコードです:コンパイラに変数が存在するかどうかを伝える方法

  string line; 
     bool fileExists = false; 
     System.IO.StreamReader fileIn; 
     System.IO.StreamWriter fileOut; 

     fileIn = new System.IO.StreamReader(inputFile); 

     while ((line = fileIn.ReadLine()) != null) 
     { 
      if (line.Length > 0 && line.Substring(0, 1) == "O") 
      { 
       _parent.StatusOutput(line); 
       if (fileExists) 
       { 
        // close the existing file ... 
        fileOut.WriteLine(); 
        fileOut.WriteLine(); 
        fileOut.WriteLine("%"); 
        fileOut.Close(); 
       } 
       // create a new file ... 
       fileOut = new System.IO.StreamWriter(outputFolder + @"\" + line); 
       fileExists = true; 
       fileOut.WriteLine(); 
       fileOut.WriteLine("%"); 
       fileOut.WriteLine(line); 
      } 
      else if (line.Length == 0) 
      { 
       _parent.StatusOutput("Blank line."); 
       if (fileExists) fileOut.WriteLine(); 
      } 
      else if (line.Length > 0 && line == "%") 
      { 
       _parent.StatusOutput("BO/EOF found."); 
       // do nothing ... 
      } 
      else 
      { 
       // everything else goes to the new file ... 
       if (fileExists) fileOut.WriteLine(); 
      } 
     } // while ... 

     // close the last file ... 
     fileOut.WriteLine(); 
     fileOut.WriteLine(); 
     fileOut.WriteLine("%"); 
     fileOut.Close(); 
     fileIn.Close(); 

私はfileOutに書き込もうとしています。私はfileOutの書き込みが時間内に存在することを知っているが、コンパイラは存在しない。

これを無視するにはどうすればよいですか?

おかげで、 バーニー

+0

*必要なとき*は何を意味していますか?それを使用する前に明示的に宣言する必要があります。 – Guy

+2

割り当てられていないローカル*: 'System.IO.StreamReader fileIn = null;'の使用を避けるには: –

+0

@BernieHunt:どのようなエラーがありますか? –

答えて

3

あなたは、それが宣言されたときfileOutnullを割り当て、それがnullでないかどうかを確認できます。

string line; 
    System.IO.StreamReader fileIn; 
    System.IO.StreamWriter fileOut = null; 

    fileIn = new System.IO.StreamReader(inputFile); 

    while ((line = fileIn.ReadLine()) != null) 
    { 
     if (line.Length > 0 && line.Substring(0, 1) == "O") 
     { 
      _parent.StatusOutput(line); 
      if (fileOut != null) 
      { 
       // close the existing file ... 
       fileOut.WriteLine(); 
       fileOut.WriteLine(); 
       fileOut.WriteLine("%"); 
       fileOut.Close(); 
      } 

      // create a new file ... 
      fileOut = new System.IO.StreamWriter(outputFolder + @"\" + line); 
      fileOut.WriteLine(); 
      fileOut.WriteLine("%"); 
      fileOut.WriteLine(line); 
+1

@TejasVaishnavそれはOPのコードです。私はコードの一部だけを修正しました。これは問題と関係しています。このコミュニティはコーディングパターンについてではありません! –

+0

ちょうど好奇心から、どのようにこのコードをリファクタリングしますか?あなたは 'fileOut.Writeline(" \ n \ n% ");'または 'fileOut.WriteLine(Environment.Newline + Environment.Newline +"% ");'を使用しますか? –

+1

@ RomanoZumbéあなたは正しいです、急いでコードを誤解しました。私はSystem.IO.StreamWriter fileOut = nullに焦点を当てていました。 NewLineではなく、私のコメントを返す、謝罪! –

0

あなただけの移動fileOut初期のようにそれを使用する前に初期化する必要がありfileInの後に

fileIn = new System.IO.StreamReader(inputFile); 

fileOut = new System.IO.StreamWriter(outputFolder + @"\" + line); 
+1

あなたのコードが間違っていると思います。 'fileOut'は、' line'がその時点で初期化されていないために存在しないパスで作成されます。さらにそれを行うことは無意味です。 nullの値を代入するだけで十分です。 –

関連する問題