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

C#如何实现检查值匹配所有预设条件的功能

问题根源

你声明的List<bool> conditionsToCheck是布尔值集合,只能存储固定的true/false值,无法存储可执行的校验方法。你尝试对布尔值执行conditionsToCheck[i](wordToCheck)这类方法调用操作,所以编译器抛出method name expected(需要方法名)错误。

修复方案

你需要用.NET内置的泛型委托Func<string, bool>定义集合类型,该委托代表「接收1个string类型参数、返回bool类型结果」的方法,完全匹配你的校验场景。

修正后完整代码

using System.Collections.Generic;
using System.Linq; // 需引入LINQ命名空间简化校验逻辑

// 存储所有校验委托的集合
public List<Func<string, bool>> conditionsToCheck = new List<Func<string, bool>>();

/// <summary>
/// 校验单词是否满足所有条件
/// </summary>
public bool IsWordValid(string wordToCheck)
{
    // 所有校验规则都返回true时整体结果才为true,任意规则不满足直接终止校验
    return conditionsToCheck.All(checkFunc => checkFunc(wordToCheck));
}

/// <summary>
/// 添加校验规则
/// </summary>
public void AddConditionToCheck(Func<string, bool> condition)
{
    conditionsToCheck.Add(condition);
}

使用示例

// 可以直接用Lambda表达式添加校验规则
AddConditionToCheck(word => word.Length >= 3); // 规则1:长度不小于3
AddConditionToCheck(word => !word.Contains(" ")); // 规则2:不能包含空格

// 也可以传入符合签名的自定义方法
bool CheckNoNumber(string word)
{
    return !word.Any(char.IsDigit);
}
AddConditionToCheck(CheckNoNumber); // 规则3:不能包含数字

// 执行校验
Console.WriteLine(IsWordValid("abc")); // 输出True
Console.WriteLine(IsWordValid("a1 bc")); // 输出False

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 02:48:04