2013-03-26 37 views
0

我一直在C#編程大約一年,通常我會忽略某處的細節,從而陷入這樣的問題。我覺得我正在這樣做,但我似乎無法解決問題。我有一個名爲'input'的字符串變量,我在'Main'類中聲明瞭'if'語句,如下所示:
string input = Console.Readline();
作爲單獨的'if'語句,寫這:當前上下文中不存在名稱'輸入'

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的是在第二個「如果」聲明同時強調「輸入」變量,並說「輸入名稱不會在目前的背景下存在」。我覺得我正在俯視一些東西,任何幫助將不勝感激。 我完整的代碼是這樣的:需要

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

    } 
} 
} 
+2

我們需要在現場看到它們。您還沒有提到是否有不同的方法或其他可能會改變變量範圍的結構代碼。 – cjk 2013-03-26 13:32:26

+2

我們有*無*線索你聲明'輸入'與這個代碼是在哪裏。基本上,我們沒有足夠的上下文來幫助你。例如,你是否在構造函數中將'input'聲明爲局部變量,然後嘗試在單獨的方法中訪問它?或者,它可能是一個實例變量,你試圖在靜態方法中使用它?如果它*是一個字符串變量,爲什麼你試圖將它與0進行比較? – 2013-03-26 13:32:32

+1

請顯示完整的上下文 – 2013-03-26 13:33:14

回答

2

在第一個if語句之前聲明輸入變量。因爲它在其內部聲明僅在if語句中可用(或者在您的循環內部)

+0

這工作完美,非常感謝 – noogii2k 2013-03-26 13:39:11

0

更多的代碼,但它可能是因爲你正在嘗試比較字符串爲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"); 
    } 

} 
+1

您不會因爲將字符串與int進行比較而出現該錯誤。你會得到一個錯誤,說明你不能將一個字符串與一個int進行比較。 ;) – 2013-03-26 13:35:34

+0

我也會小心說出「在你的函數開頭」。他只需要在使用變量之前在if語句之外聲明它。 =) – 2013-03-26 13:39:32

+0

哈哈是的,你是雙倍正確的,我會盡量在將來更加清晰。 – RyPope 2013-03-26 13:41:15

0

你的字符串輸入是在你的循環中聲明的。因此,在這個循環之後它是不知道的。 在循環之外聲明它(並將它初始化爲nullString.Empty),然後將其填充到循環中

+0

或者在第一個if語句中,甚至是。除了第一個範圍內的第二個範圍之外,該循環幾乎沒有什麼結果。 – 2013-03-26 13:36:37

1

input只存在於您的第一個if statement內的while loop的範圍內。

移到外面。

string input = new string(); 

if (start == "start") { 
    while (true) 
    { 
      Console.WriteLine ("Started"); 
      Console.Write (precursor); 
      input = Console.ReadLine(); 
    } 
} 
相關問題