2017-02-21 8 views
-4
 int VillainId = -1; 
     Console.Write("Enter VillainId: "); 
     while (!int.TryParse(Console.ReadLine(), out VillainId)) 
     { 
      Console.WriteLine("You need to enter a valid Villain Id!"); 
      Console.Write("Enter VillainId: "); 
     } 

while(**this code here**){//rest of the code}のコードがどのように動作するか教えてもらえますか?私はそれが{}の中にあったのかどうかを理解しています。それはどのように機能するのですか?while式の中でコードを実行する

+1

'それは成功し、それはConsole.ReadLine()からなってきた文字列を解析した場合にtrueを返しますint.TryParse'。その前にある '!'はboolを逆転させることを意味し、 'while'は括弧内のコードを実行し、' int.TryParse'がfalseを返した場合、 'while'が再び実行されます。 'int.TryParse'はtrueを返します。 –

+1

だから、もし私が正しく偽であれば、{}内の作業を行い、もう一度チェックして、try.parse全体を実行し、成功した場合はintを返してtrueを返します。 –

+1

これは正しいことです。再度入力するたびに、再度Console.ReadLine()を呼び出し、新しい値などを解析しようとするint.TryParse()に渡します。成功し、ループから脱出する。 [do/whileループ](https://msdn.microsoft.com/en-us/library/370s1zax.aspx?f=255&MSPPError=-2147217396)は、そのコードを書く別の方法です。周りに頭を下げる。 –

答えて

3

int.TryParseはtrueを返します。その前にある!は、int.TryParseによって返されたブール値を逆転させることを意味するので、whileは括弧内のコードを実行し、int.TryParseがfalseを返した場合、falseはtrueに逆になり、whileは再び何度も実行されます。 int.TryParseがtrueを返すまで。 "while execution"は、括弧内のコードが最初に実行されたことを意味し、その結果がtrueならば、whileの本体も同様に実行されます。

同じコードを書く別の方法があります。それは少しコンパクトですが、従うことが容易になるかもしれません:

int VillainId = -1; 
bool parseOK = false; 
do 
{ 
    Console.Write("Enter VillainId: "); 

    parseOK = int.TryParse(Console.ReadLine(), out VillainId); 

    if (!parseOK) 
    { 
     Console.WriteLine("You need to enter a valid Villain Id!"); 
    } 
} while (! parseOK); 
2

int.TryParse()戻りtrueの変換が成功したと! (logical negation operator)が彼の右側にboolean値を反転した場合(!truefalseに等しいです)。

whileにおける条件は、すべてのループ評価されるので、すべての無効な入力は、while()のブロックコードが実行されます。

流れは基本的には、次のとおりです。それは成功し、それがConsole.ReadLine()からなってきた文字列を解析した場合

Console.Write("Enter VillainId: "); 
// asks to user input 

while (!int.TryParse(Console.ReadLine(), out VillainId)) 
// while the conversion is not successfull 
{ 
    Console.WriteLine("You need to enter a valid Villain Id!"); 
    Console.Write("Enter VillainId: "); 
    // asks for user to input valid data 
} 
+0

私が理解していることは、whileループは条件をチェックするたびにtry.parseを実行するのですか? –

+0

@StoyanGrigorovコードを実行して、自分で見つけてください。 – Servy

+0

Ed Plunkettのコメントを読んだ後、私はそれがどのようにはっきりと働くかを理解しています。入力ありがとう: –

関連する問題