C# 为什么';我的while循环不工作吗?有人能告诉我错误消息是如何工作的吗?

C# 为什么';我的while循环不工作吗?有人能告诉我错误消息是如何工作的吗?,c#,if-statement,while-loop,application-restart,C#,If Statement,While Loop,Application Restart,如何重新启动此代码块?我的想法是,如果您输入一个字符,它将返回一条错误消息。循环的条件是什么 字符串r\u操作; Console.Write(“\t写入重新操作ein:”); r_operation=Console.ReadLine(); ------------- 而(?r_operation=Console.ReadLine()) { Console.WriteLine(“\tUngültige Eingabe.bite geben Sie nur Zahlen ein!”); } 您可以将

如何重新启动此代码块?我的想法是,如果您输入一个字符,它将返回一条错误消息。循环的条件是什么

字符串r\u操作;
Console.Write(“\t写入重新操作ein:”);
r_operation=Console.ReadLine();
-------------
而(?r_operation=Console.ReadLine())
{
Console.WriteLine(“\tUngültige Eingabe.bite geben Sie nur Zahlen ein!”);
}

您可以将现有代码转换为使用
int.TryParse
方法,该方法返回一个
bool
,指示输入字符串是否为有效数字(并将
out
参数设置为转换后的值):


另一种方法是将从用户获取强类型数字的过程封装到方法中。我用的是:

private static int GetIntFromUser(string prompt, Func<int, bool> validator = null)
{
    int result;
    var cursorTop = Console.CursorTop;

    do
    {
        ClearSpecificLineAndWrite(cursorTop, prompt);
    } while (!int.TryParse(Console.ReadLine(), out result) ||
             !(validator?.Invoke(result) ?? true));

    return result;
}

private static void ClearSpecificLineAndWrite(int cursorTop, string message)
{
    Console.SetCursorPosition(0, cursorTop);
    Console.Write(new string(' ', Console.WindowWidth));
    Console.SetCursorPosition(0, cursorTop);
    Console.Write(message);
}
如果您想添加一些额外的约束,helper方法还需要一个
validator
函数(它接受
int
并返回一个
bool
,指示
int
是否有效)。因此,如果您想将数字限制为从
1
5
,可以执行以下操作:

var result = GetIntFromUser("Enter a number from 1 to 5: ", i => i > 0 && i < 6);
var result=GetIntFromUser(“输入一个从1到5的数字:”,i=>i>0&&i<6);
int operation = GetIntFromUser("\tBitte geben Sie ihre Rechenoperation ein: ");
var result = GetIntFromUser("Enter a number from 1 to 5: ", i => i > 0 && i < 6);