2016-11-30 9 views
0

私はプログラミングがとても新しいです。約2ヶ月しかやっていない。名前swは現在のコンテキストに存在しませんC#?

「現在のコンテキストに名前swが存在しません」 「using system.IO;」と宣言しました。頂点で。

本当にそれを修正する方法はありません。何か案は?

 //enter new user 

     if (iOption == 2) 
     { 
      //Enter new user information and add them to file 
      Console.Write("Please Enter the number of users you wish to log: "); 
      iUserNumber = Convert.ToInt32(Console.ReadLine()); 

      //open file for writing, in APPEND mode 
      using (StreamWriter sw = new StreamWriter("NewUser.txt", true)) 

       //loop for each user 
       for (iCount = 1; iCount <= iUserNumber; iCount++) 

        // enter details 
        Console.Write("Please Enter your Name" + iCount + ": "); 
      sName = Console.ReadLine(); 

      // write to file 
      sw.WriteLine(sName); 
      Console.WriteLine(); 

      Console.Write("Please Enter the Name of your School: "); 
      iSchoolName = Convert.ToInt32(Console.ReadLine()); 
      Console.WriteLine(); 

      Console.Write("Please Enter the name of your class: "); 
      iClassName = Convert.ToInt32(Console.ReadLine()); 
      Console.WriteLine(); 
     } 
+1

このコードはコンパイルされません。それを[mcve]に減らしてください。 –

+0

私はswがオブジェクトかStreamWriterであることを知ることができます。また、あなたは上に宣言したと言いました。 –

答えて

2

swようになるはずですusingのコンテキスト内でのみ有効です。 usingの後には{}がありません。つまり、次の文のコンテキストのみを意味します。

using (StreamWriter sw = new StreamWriter("NewUser.txt", true)) 

     //loop for each user 
     for (iCount = 1; iCount <= iUserNumber; iCount++) 

      // enter details 
      Console.Write("Please Enter your Name" + iCount + ": "); 

これ以外のコードは、usingのコンテキストではなくなりました。つまり、StreamWriterが処分され、もう使用できなくなります。より多くのコンテキストを定義するには、あなたはここで{}

using (StreamWriter sw = new StreamWriter("NewUser.txt", true)) 
{ 
    //loop for each user 
    for (iCount = 1; iCount <= iUserNumber; iCount++) 

     // enter details 
     Console.Write("Please Enter your Name" + iCount + ": "); 
    sName = Console.ReadLine(); 

    // write to file 
    sw.WriteLine(sName); 
    Console.WriteLine(); 
} 

swに依存しているコードを配置する必要があり、swが使用するために利用できるとは文脈のままです。私はこれが理にかなってほしい。

を編集するだけのノート

。文脈に関しては、{}が重要です。あなたのコードから、forループにもそれがないことがわかります。これはあなたが期待する通りには機能しません。 5と入力した場合、コードに「Please enter your name n」と表示され、1つの名前を待つ。

//loop for each user 
for (iCount = 1; iCount <= iUserNumber; iCount++) 
    // enter details 
    Console.Write("Please Enter your Name" + iCount + ": "); 
sName = Console.ReadLine(); 

// write to file 
sw.WriteLine(sName); 
Console.WriteLine(); 

snameはループのコンテキスト内にありません。その行が実行される前にループが完了します。必要とする{}

//loop for each user 
for (iCount = 1; iCount <= iUserNumber; iCount++) 
{ 
    // enter details 
    Console.Write("Please Enter your Name" + iCount + ": "); 
    sName = Console.ReadLine(); 

    // write to file 
    sw.WriteLine(sName); 
    Console.WriteLine(); 
} 
3

中括弧が欠落しています。あなたのコードは

using (StreamWriter sw = new StreamWriter("NewUser.txt", true)) 
{ 
       //loop for each user 
       for (iCount = 1; iCount <= iUserNumber; iCount++) 

        // enter details 
        Console.Write("Please Enter your Name" + iCount + ": "); 
      sName = Console.ReadLine(); 

      // write to file 
      sw.WriteLine(sName); 
    } 
関連する問題