2016-11-30 79 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已被处置,不再可用。要定义更多的情况下,你必须把那取决于sw的代码{}

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仍然在背景和可以使用。我希望这是有道理的。

编辑

只是说明;关于上下文,{}很重要。我从您的代码中看到for循环也缺少它。这不会像你期望的那样工作。如果我输入5,代码将显示“Please Enter your Name n”5次,然后等待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); 
    } 
相关问题