0

我已经使用 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”语句中突出显示了两个“输入”变量,并说“当前上下文中不存在名称输入”。我觉得我忽略了一些东西,任何帮助将不胜感激。我的完整代码是这样的:

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

    }
}
}
4

4 回答 4

2

在您的第一个 if 语句之前声明您的输入变量。因为它是在里面声明的,所以它只能在你的 if 语句中使用(或者在这种情况下在你的循环中)

于 2013-03-26T13:36:45.403 回答
1

input只存在于你的范围while loop内你的第一个if statement

把它移到外面。

string input = new string();

if (start == "start") {
    while (true) 
    {
            Console.WriteLine ("Started");
            Console.Write (precursor);
            input = Console.ReadLine ();
    }
}
于 2013-03-26T13:37:53.500 回答
0

需要更多代码,但这可能是因为您试图将 String 与 int 进行比较。也许你正在寻找

input.equals("0")?

编辑:查看您的代码,您在 if 语句中初始化了变量。您必须在函数开始时对其进行初始化。即使您只是将其设置为空。

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

}
于 2013-03-26T13:34:53.077 回答
0

您的字符串输入在循环中声明。因此,在这个循环之后它是未知的。在循环之外声明它(并将其启动为nullor String.Empty)然后将其填充到循环中

于 2013-03-26T13:35:46.220 回答