You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#输入验证函数中传入自定义校验规则?

C#输入验证函数扩展自定义校验条件的实现方法

你写的基础输入验证函数GetInt()可以正常校验输入是否为整数,现在要扩展支持自定义校验条件,你的思路方向是对的,只需要用C#的委托类型来实现条件的传递。

原函数代码

private static int GetInt()
{
    int tryInt;

    while (true)
    {
        if (int.TryParse(Console.ReadLine(), out tryInt)) 
            return tryInt;
        else 
            Console.Write("Try again:");
    }
}

修改方案:使用委托传递校验条件

C#里可以用Func<int, bool>或者Predicate<int>作为参数,接收一个整数并返回布尔值的校验逻辑。这里推荐用Func<int, bool>,因为它更通用,能适配更多场景。

修改后的函数代码如下:

private static int GetInt(Func<int, bool> validationCriteria)
{
    int tryInt;

    while (true)
    {
        // 先校验是否为整数,再校验自定义条件
        if (int.TryParse(Console.ReadLine(), out tryInt) && validationCriteria(tryInt)) 
            return tryInt;
        else 
            Console.Write("Try again:");
    }
}

调用示例(满足大于20的奇数)

当你需要校验输入是大于20的奇数时,直接用Lambda表达式传递校验逻辑:

// 调用GetInt,传入自定义校验条件
int validNumber = GetInt(n => n > 20 && n % 2 != 0);

其他扩展场景

这种方式可以灵活适配各种校验需求,比如:

  • 输入必须是10到100之间的偶数:GetInt(n => n >=10 && n <=100 && n%2 ==0)
  • 输入必须是正整数:GetInt(n => n >0)

对你修改思路的回应

你之前的修改思路完全正确,只是需要用C#内置的委托类型替换<criteria>占位符,Func<int, bool>就是用来承载这种“输入整数、返回是否符合条件”的逻辑的类型。

内容的提问来源于stack exchange,提问作者Simcha Bryzgalov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 08:37:08