2017-09-20 11 views
0

私はちょうどC#の学習を始めました。問題が発生しました。名前 '..'は現在のコンテキストに存在しません

namespace ConsoleApp3 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Console.WriteLine("This is a text adventure! <press space to continue>"); 
      Console.ReadKey(); 
      do 
      { 
       Console.WriteLine("A monster aproaches what do you do? <Attack,Flee>"); 
       string a = Console.ReadLine(); 
      } while(a != "Attack" && a != "Flee"); 

     } 
    } 
} 

助けが役に立ちます。

+2

イム「」のdoesntが存在言いながらライン上の推測 - これは列A = Console.ReadLine() ' – BugFinder

+5

範囲の問題であり、異なるスコープ以外に、do'ブロック'の内部に配置され '下にある間に。 –

+0

ループの前に 'string a'を宣言するだけです。 – Rafalon

答えて

3

は、私はあなたがこのようdoブロック外の文字列変数としてaを宣言すべきだと思う:

string a = ""; 

do 
{ 
    Console.WriteLine("A monster aproaches what do you do? <Attack,Flee>"); 
    a = Console.ReadLine(); 
} while (a != "Attack" && a != "Flee"); 

whileMainメソッドのスコープに傾向があり、それ故にadoブロック内で割り当てられた前Main上に存在しなければなりません。

+3

on宣言が決して使用されないため、on宣言に値を割り当てる理由はありません。あなたが '' string a; ''だけを使うという私の意見では、Neaterと少しはっきりしています。 – Chris

0

希望のエラーが「」変数であり、修正がここにあります....

「」変数は、ループの前に宣言する必要があり、あなたは「」ループの内部反復

のために値を割り当てることができます
class Program 
    { 
    static void Main(string[] args) 
    { 
     Console.WriteLine("This is a text adventure! <press space to continue>"); 
     string a ; 
     do 
     { 
     Console.WriteLine("A monster aproaches what do you do? <Attack,Flee>"); 
     a = Console.ReadLine(); 
    } while(a != "Attack" && a != "Flee"); 

    } 
    } 
+0

説明はありますか?コードをダンプするだけで、OPが問題を理解するのに役立たない。 – Toshi

+0

@Toshi Done Tx。 –

+0

2行目の説明は少し混乱させる可能性があります。 'a'変数は' do'ですでにアクセス可能であったので、do-whileでアクセスするにはこれを行う必要があると言っているので、かなり正確ではありません。 – Chris

-1

この文字列a = ""を行うだけです。あなたのreadlineで文字列を設定する前に、あなたがしようとしているようにそれを使用することができます。がんばろう! :)

0

スコープが閉じ括弧までしかない場合。それを外から、使用よりも宣言してください。

string a = ""; 
     Console.WriteLine("This is a text adventure! <press space to continue>"); 
     Console.ReadKey(); 
     do 
     { 
      Console.WriteLine("A monster aproaches what do you do? <Attack,Flee>"); 
      a = Console.ReadLine(); 
     } while (a != "Attack" && a != "Flee"); 
関連する問題