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