名称'输入'在当前上下文中不存在

本文关键字:上下文 不存在 输入 名称 | 更新日期: 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");
    }
}

你的字符串输入是在循环中声明的。因此,在这个循环之后,它是未知的。在循环外声明它(并初始化为nullString.Empty),然后在循环内填充它