2013-03-26 3 views
0

저는 약 1 년 동안 C# 프로그래밍을 해왔으며 일반적으로 어딘가에서 세부 사항을 간과하여이 같은 문제에 직면합니다. 이 일을 다시하고있는 것처럼 느껴지지만 문제를 해결할 수없는 것 같습니다. 나는 'input'이라는 문자열 변수를 가지고 있는데, 'Main'클래스의 'if'문에서 다음과 같이 선언했다.
string input = Console.Readline();
동일한 'Main'클래스에서 별도의 '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

+2

이 코드가 어디에 있는지'input'을 선언 할 곳이 어디인지 * 단서가 없습니다. 기본적으로, 약간의 문맥으로 우리는 당신을 도울 수 없습니다. 예를 들어, 생성자에서'input'을 지역 변수로 선언 했습니까? 그러면 당신은 다른 방법으로 접근하려고합니다. 아니면 인스턴스 변수이고 정적 메서드에서 사용하려고합니다. 그리고 * 문자열 변수 인 경우 왜 그것을 0과 비교하려고합니까? –

+1

전체 내용보기 –

답변

2

첫 번째 if 문 앞에 입력 변수를 선언하십시오. 내부에 선언 되었기 때문에 if 문 (또는이 경우 루프 내부)에서만 사용할 수 있습니다.

+0

이것은 완벽하게 작동했습니다. 많은 감사의 말을 전합니다. – noogii2k

0

더 많은 코드가 필요합니다, 당신은 int로 문자열을 비교하려고하기 때문에 그러나 그것은있을 수 있습니다. 아마도 당신이 찾고 있었어

편집 : 코드를보고 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와 비교할 수 없다는 오류가 발생합니다. ;) –

+0

나는 또한 "당신의 기능 시작"과 같은 것을 말하는 것에 조심할 것입니다. 변수를 사용하기 전에 if 문 바로 밖에서 선언해야합니다. =) –

+0

하하 네, 네가 두배로 정확하다, 나는 앞으로 더 명확하게하려고 노력할 것이다. – RyPope

0

문자열 입력이 루프 내에서 선언되었습니다. 따라서이 루프 후에는 알 수 없습니다. 루프 밖에서 선언하고 (null 또는 String.Empty) 루프 내에서 채우십시오.

+0

또는 첫 번째 if 문 내부. 루프는 첫 번째 범위 내에서 두 번째 범위를 넘어서 거의 영향을 미치지 않습니다. –

1

input은 처음 if statement에있는 while loop의 범위에만 있습니다.

외부로 이동하십시오.

string input = new string(); 

if (start == "start") { 
    while (true) 
    { 
      Console.WriteLine ("Started"); 
      Console.Write (precursor); 
      input = Console.ReadLine(); 
    } 
} 
관련 문제