[英]C# Validate integer user input in class property
今天是个好日子。 令我感到羞耻的是,不明白如何制作它。 我有一个 class 像:
public class Worker
{
public int ID { get; set; }
}
以及带有工人列表的数据 class。 有一种方法可以使用它:
public Department GetWorkerByID (int id)
{
foreach (Worker worker in Workers)
{
if (worker.ID == id)
return worker;
}
return null;
{
问题是我需要让用户能够通过 ID 号从列表中选择当前工作人员,并且我希望程序处理无效输入,如随机符号、字母等,并检查输入 ID 是否存在。 通常我为此使用 boolean 属性:
string input = Console.ReadLine();
bool isInt = int.TryParse(input, out _);
等等。 但是如果使用 class 属性,它不会像我预期的那样工作,当我尝试这样做时:
while (!isInt && Data.GetWorkerByID(int.Parse(input)) == null)
{
Console.Write("Wrong input. Try again: ");
input = Console.ReadLine();
}
它不起作用,向我抛出 ID 号无效格式的异常或传递数字,而不是尝试获取不存在的 worker 实例。 欢迎任何建议。
尝试做这样的事情:
C#:
public Worker TryGetWorker()
{
string input = Console.ReadLine();
int index = -1;
bool isInt = int.TryParse(input,out index);
Worker worker = Data.GetWorkerByID(index);
if (!isInt || worker == null)
{
Console.Write("Wrong input. Try again: ");
return TryGetWorker();
}
else
return worker;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.