名称'输入'在当前上下文中不存在
本文关键字:上下文 不存在 输入 名称 | 更新日期: 2023-09-27 18:06:08
我从事c#编程已经有一年了,我经常会因为忽视某个细节而遇到这样的问题。我觉得我又这样做了,但我似乎无法解决这个问题。我有一个名为'input'的字符串变量,我已经在'Main'类中的'if'语句中声明了它,如下所示:string input = Console.Readline();
作为一个单独的'if'语句,在同一个'Main'类中,我这样写:
if (input != null || input != 0)
{
//I have code for this part, but it is irrelevant
}
else
{
//And this part, but it is also irrelevant
}
我的问题是MonoDevelop在第二个"if"语句中突出了两个"input"变量,并说"当前上下文中不存在名称输入"。我觉得我忽略了一些东西,任何帮助都会很感激。我的完整代码是:
using System;
namespace ConsoleTest
{
class MainClass
{
public static string version = "0.0.1";
public static string precursor = "/:>";
public static void Main (string[] args)
{
Console.Write ("Console Test ");
Console.WriteLine (version);
Console.Write (precursor);
string start = Console.ReadLine ();
if (start == "start") {
while (true) {
Console.WriteLine ("Started");
Console.Write (precursor);
string input = Console.ReadLine ();
}
} else {
Environment.Exit (0);
}
if (input != null || input != 0) {
//Code
} else {
Console.WriteLine("Error: Input null");
}
}
}
}
在第一个if语句之前声明输入变量。因为它是在内部声明的所以它只能在if语句中使用(或者在这个例子中在循环中)
input
只存在于您的while loop
范围内的第一个if statement
。
把它移到外面。
string input = new string();
if (start == "start") {
while (true)
{
Console.WriteLine ("Started");
Console.Write (precursor);
input = Console.ReadLine ();
}
}
需要更多的代码,但这可能是因为您正在尝试将String与int进行比较。也许你正在寻找
input.equals("0")?
编辑:看看你的代码,你初始化了if语句中的变量。你必须在函数开始的时候初始化它。即使你只是把它设置为null。
public static void Main (string[] args)
{
Console.Write ("Console Test ");
Console.WriteLine (version);
Console.Write (precursor);
string start = Console.ReadLine ();
string input = null;
if (start == "start") {
while (true) {
Console.WriteLine ("Started");
Console.Write (precursor);
input = Console.ReadLine ();
}
} else {
Environment.Exit (0);
}
if (input != null || !input.equals("0")) {
//Code
} else {
Console.WriteLine("Error: Input null");
}
}
你的字符串输入是在循环中声明的。因此,在这个循环之后,它是未知的。在循环外声明它(并初始化为null
或String.Empty
),然后在循环内填充它