2017-02-24 6 views
-1

그래서 사용자가 주어진 선택 항목에 숫자를 쓰도록 요청하는 프로그램을 만들려고합니다. 변수를 어디에 저장하고 싶은지 선언했는데 변수가 어디서나 사용되는 것은 아니기 때문에 문제가 있습니다. 다음은 이해를 돕기위한 몇 가지 코드입니다.이 변수가 인식되지 않는 이유는 무엇입니까? C# Do-While 문제

public class Rooms 
{ 
    public void roomNumber() 
    { 
     int userChoice;// The problem is here, c# is saying : 
     //Field Rooms.userChoice is never assigned to and will always have its default value 0 
     do 
     { 
      Console.WriteLine("What Type of Room ? "); 
      Console.WriteLine("Press 1 - Kitchen"); 
      Console.WriteLine("Press 2 - Living"); 
      Console.WriteLine("Press 3 - Bathroom"); 
      Console.WriteLine("Press 4 - Bedroom"); 
      Console.WriteLine("Press 5 If There Are No More Rooms To Add."); 
      userChoice = Convert.ToInt32(Console.ReadLine()); 

      if(userChoice != 5) 
      { 
       Console.WriteLine("Is it Furnished/Finished ?"); 
       Console.WriteLine("1 - Furnished"); 
       Console.WriteLine("2 - Finished"); 
       int status = Convert.ToInt32(Console.ReadLine()); 

      } 
     } while (userChoice != 5); 
+1

일시적인 잘못된 경고 일 수 있습니다. Visual Studio를 닫고 프로젝트의 obj/bin 폴더를 삭제하고 Visual Studio를 다시 엽니 다. 지속되면 무시하거나 BS가 원인을 분석하는 코드를 끄십시오. – Will

+3

이것이 해당 경고를 생성하는 코드와 정확히 일치합니까? 외부 글로벌 선언 – Steve

+3

더 많은 코드 표시를 모호하게하는 메서드 내에서 userChoice를 다시 선언하는 경우에만 해당 메시지를 가져와야합니다. – abelenky

답변

0

잘못된 경고가 종종 발생하고 그들이 잘못 알고있는 경우에 당신은 거의 무시 할 수 있습니다.

이와 같은 경우 (현재 코드는 이전 코드에서자를 수있는 문제를 나타내지 않음) 이전에 생성 된 아티팩트가 메모리 나 디스크에 끈으로 묶여있을 수 있습니다 (모양이 다양합니다. 이 물건에 관련된 마법의, 나는 거짓말하지 않을 것이다).

이러한 경우의 가장 좋은 해결책은 VS를 닫고 솔루션의 모든 bin 및 obj 폴더를 삭제하고 VS를 다시 시작한 다음 정리 빌드를 수행하는 것입니다.

+0

(OP 질문에 대한 의견에 내 제안이 반영된 이후 답변이 추가됨) – Will

1

이것은 완전한 코드가 아닙니다. 경고는 로컬 변수과 같은 이름의 필드가이며 사용자가 질문에 표시했다고 생각됩니다. 필드 (클래스 멤버) 또는 로컬 변수의 이름을 바꾸거나 제거하고이 중 하나만 사용하십시오.

원하는 명명 규칙을 사용함으로써 이러한 오류를 방지 할 수

  • 프리픽스 부재 _ (.. 예컨대 _my_field)
  • p
  • 프리픽스 방법 매개 변수는 일반적으로, 예를 로컬 변수 물품. 지. 낙타의 경우
  • 등의