繁体   English   中英

C# 在 class 属性中验证 integer 用户输入

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM