创建带参数的委托函数

 手机用户2502870457 发布于 2023-02-13 12:43

我在单元测试中有以下委托功能,它工作得很好

List RecordSet = FileData.RecordSet;
Record result = RecordSet.Find(
        delegate(Record r)
        {
            return r.UserID == "12345";
        }
    );

它很棒.我需要多次执行此搜索,因此我尝试将其添加到我可以调用的函数中,该函数将UserID作为参数,它非常相似,但由于某种原因,ALWAYS返回null.

public Record findRecord(List RecordSet, string UserID)
{
    Record result = RecordSet.Find(
        delegate(Record r)
        {
            return r.UserID.Trim() == UserID;
        }
    );

    return null;
}

我也尝试通过硬编码"12345"作为UserID值,也返回null.更奇怪的是,当我处于调试模式并且查看RecordSet中的值时,我确实看到具有确切UserID的Record.但由于某种原因,没有结果,但上面第一个函数中相同的代码和相同的数据返回结果就好了.

另外,仅供参考,我喜欢LINQ解决问题的方法:

Record result = RecordSet.Where(x => x.UserID == "12345").Select(x => x).First();

但我特意寻找委托解决方案失败的原因

1 个回答
  • 问题是你的方法总是返回null,因为这行:

    return null;
    

    用它替换它你应该有更好的运气:

    return result;
    

    但是,您可以使用lambda表达式来简化此操作,该表达式采用a Record并返回a bool.试试这个:

    return RecordSet.Find(r => r.UserID.Trim() == UserID);
    

    2023-02-13 12:45 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有