C#错误CS0103:名称' i'在当前上下文中不存在

时间:2017-10-01 22:32:57

标签: c#

有人可以给我一些关于我的代码的见解。我的C#程序假设从客户端向服务器发送消息,但只提取和打印元音。但它说明了我的“我”。不存在请帮助。

// 5. Display the received message:
            Console.WriteLine("[Server] Message of client recieved");
            for (int i = 0; i < totalBytes; i++)
            {
                aChar = Convert.ToChar(incomingDataBuffer[i]);
                Console.Write(aChar);
            }

            {
               aChar = Convert.ToChar(incomingDataBuffer[i]);
               if(aChar == 'a' || aChar == 'A' || aChar == 'e' || aChar == 'E' || aChar == 'i' || aChar == 'I' || aChar == 'o' || aChar == 'O' || aChar == 'u' || aChar == 'U')
               {  
                   Console.Write(aChar);
               }

}

3 个答案:

答案 0 :(得分:1)

你用第一个关闭了for循环}。 &#39; i&#39;的范围仅限于{...}正文,因此较低的Convert.ToChar不在&#39; i&#39;范围内,它不再存在。

for (int i = 0; i < totalBytes; i++)
{
  aChar = Convert.ToChar(incomingDataBuffer[i]);
  Console.Write(aChar);
  aChar = Convert.ToChar(incomingDataBuffer[i]);
  if(aChar == 'a' || aChar == 'A' || aChar == 'e' || aChar == 'E' || aChar == 'i' || aChar == 'I' || aChar == 'o' || aChar == 'O' || aChar == 'u' || aChar == 'U')
  {  
    Console.Write(aChar);
  }
}

会修复它,或者你可以创建两个for循环来使输出成为你想要的输出。

答案 1 :(得分:0)

你只能在for循环中使用“i”,因为它是局部变量。

答案 2 :(得分:0)

好像你打算在for循环中包含你的代码的第二部分,所以只需要确保结束大括号在第二部分之后。

但是你可以用更简单的方式编写代码

 var s = Encoding.ASCII.GetString(incomingDataBuffer);
 Console.WriteLine(s);
 Console.WriteLine(string.Join("",s.Where(c => "aeiou".Contains(char.ToLower(c)))));