在 while 表达式语句中执行代码
Executing code inside the while expression statement
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}
中的代码是如何工作的。我知道它是否在 {} 内,但它在条件和循环中,直到它成功解析一个数字。它是如何工作的?
int.TryParse()
returns true
如果转换成功并且 !
(logical negation operator) 反转 boolean
右侧的值(!true
等于 false
).
while
中的条件在每个循环中进行评估,因此,每个无效输入都会执行while()
中的块代码。
流程基本上是:
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
}
int.TryParse
returns 如果成功解析从 Console.ReadLine()
获取的字符串,则为真。前面的!
表示对int.TryParse
返回的boolean值取反,所以while
执行parens中的代码,如果int.TryParse
returns false,false 被反转为 true
并且 while 再次执行 - 一次又一次,直到 int.TryParse
returns 为真。 "The while executes" 表示先执行括号中的代码,然后如果结果为 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);
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}
中的代码是如何工作的。我知道它是否在 {} 内,但它在条件和循环中,直到它成功解析一个数字。它是如何工作的?
int.TryParse()
returns true
如果转换成功并且 !
(logical negation operator) 反转 boolean
右侧的值(!true
等于 false
).
while
中的条件在每个循环中进行评估,因此,每个无效输入都会执行while()
中的块代码。
流程基本上是:
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
}
int.TryParse
returns 如果成功解析从 Console.ReadLine()
获取的字符串,则为真。前面的!
表示对int.TryParse
返回的boolean值取反,所以while
执行parens中的代码,如果int.TryParse
returns false,false 被反转为 true
并且 while 再次执行 - 一次又一次,直到 int.TryParse
returns 为真。 "The while executes" 表示先执行括号中的代码,然后如果结果为 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);