在while表达式语句中执行代码

时间:2017-02-21 18:31:40

标签: c# loops while-loop tryparse

        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}中的代码是如何工作的。我理解它是否在{}内部,但它在条件和循环中,直到它成功解析一个数字。这有什么作用?

2 个答案:

答案 0 :(得分:3)

如果

int.TryParse成功解析了它从Console.ReadLine()获取的字符串,则返回true。前面的!表示反转int.TryParse返回的布尔值,因此while执行parens中的代码,如果int.TryParse返回false,则为false被反转为true并且while再次执行 - 并且一次又一次地执行,直到int.TryParse返回true。 " while执行"表示parens中的代码首先执行,然后如果结果是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);

答案 1 :(得分:2)

如果转化成功且! (logical negation operator)反转右侧的int.TryParse()值(true等于{{1},则

boolean会返回!true }})。

每个循环评估false 中的条件,因此,while中的每个无效输入都将被执行。

流程基本上是:

while()