当前上下文中不存在名称“input”

我已经进行了大约一年的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仅存在于第一个if statement中的while loop范围内。

把它移到外面。

 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"); } } 

您的字符串输入在循环内声明。 因此,在此循环之后不知道。 在循环外声明它(并将其启动为nullString.Empty )然后将其填充到循环中