基础才是重中之重~委托实例的几种定义方式(规规矩矩method,逻辑简单delegate,层次清晰lambda

简介:

委托,一个不错的东西,.net中的委托用着挺爽,它的重要性以至于微软把它单拿出来,定义了几个现成的委托,如,Func和Action,既然人家把最特殊的委托签名拿 出来了,所以咱们就不

自己去定义了,就用Func和Action委托去讲一个如何定义他们的实例吧,呵呵。

第一 规规矩矩定义方法method

1        /// <summary>
2         /// 与Func<string>相同的方法签名
3         /// </summary>
4         /// <returns></returns>
5         static string StandardFunc() { return "标准点好"; }
6         Func<string> Standard = new Func<string>(StandardFunc);//标准的委托实例

第二 逻辑简单匿名方法delegate

在对于方法逻辑简单的时候,我们没有必须再去定义一个额外的方法,而直接使用匿名方法即可

1   Func<string, bool> FuncWhat2 = delegate(string s) { return s == "hello"; };//delegate定义一个匿名方法,不用重新再定义一个方法了
1  Func<bool> FuncWhat3 = delegate() { return true; }; 

第三 层次清晰lambda

同样的逻辑简单,使用lambda表达式则会使代码层次感更清晰,本人超级推荐,呵呵

1 Func<string, string> FuncWhat4 = (string msg) => hello(msg);

事实上,微软自己的类库,也经常使用这种lambda方式,在每个新的技术出现时,小微自己都先去尝试,呵呵。

 1         //
 2         // 摘要:
 3         //     通过使用实现验证资源访问功能的函数,初始化 System.ComponentModel.DataAnnotations.ValidationAttribute
 4         //     类的新实例。
 5         //
 6         // 参数:
 7         //   errorMessageAccessor:
 8         //     实现验证资源访问的函数。
 9         //
10         // 异常:
11         //   System:ArgumentNullException:
12         //     errorMessageAccessor 为 null。
13         protected ValidationAttribute(Func<string> errorMessageAccessor);

上面我只是一个简单的举例,在实际开发时,还要因情况而定,下面是在实现项目中的一个应用,当用户登陆时,去触发一个LogOn事件,然后,所以订阅了它的方法都自动去处理自己的

逻辑,看代码:

 1     /// <summary>
 2     /// 登陆事件
 3     /// </summary>
 4     public class LogOnEvent
 5     {
 6 
 7         /// <summary>
 8         /// 登陆后的事件
 9         /// </summary>
10         public static event Action LogOnAfter;
11 
12         /// <summary>
13         /// 触发RegisterAfter事件(在本程序集中去触发)
14         /// </summary>
15         internal static void OnLogOnAfter()
16         {
17             if (LogOnAfter != null)
18             {
19                 LogOnAfter();
20             }
21         }
22 
23     }

而如果你希望在系统登陆时,去做一些事情,你可以先去订阅它就可以了,类型这种:

 1               //lambda方式
 2                 LogOnEvent.LogOnAfter += () =>
 3                 {
 4                     //登陆后要处理的逻辑 
 5                 };
 6                 //匿名方法方式
 7                 LogOnEvent.LogOnAfter += delegate()
 8                 {
 9                     //登陆后要处理的逻辑 
10                 };
11                 //普通方式
12                 LogOnEvent.LogOnAfter += LogDiary;

本文转自博客园张占岭(仓储大叔)的博客,原文链接:基础才是重中之重~委托实例的几种定义方式(规规矩矩method,逻辑简单delegate,层次清晰lambda,如需转载请自行联系原博主。

目录
相关文章
|
7月前
|
传感器 边缘计算 安全
《虚实共生:双向映射重塑具身智能决策逻辑》
传统具身智能因信息碎片化陷入“局部认知”困境,如盲人摸象。数字孪生与物理实体的双向映射,通过构建虚实交融的“认知镜像”,为智能体提供全局视角和预测能力。以智能工厂、物流配送、应急救援等场景为例,这种闭环体系显著提升决策效率与安全性。然而,数据隐私、模型精度等问题仍需技术创新与制度保障解决。最终,双向映射将使智能体进化为拥有深度环境理解与动态决策能力的“数字生命体”。
212 32
|
数据安全/隐私保护
常用的表单校验规则——邮箱/QQ/身份证号码/微信/电话/数字字母/整数/文本/密码等
常用的表单校验规则——邮箱/QQ/身份证号码/微信/电话/数字字母/整数/文本/密码等
519 0
|
传感器 开发工具 IDE
【Arduino基础教程】MQ135空气质量检测模块
MQ135空气质量检测模块 MQ135主要用于检测空气中的二氧化碳、酒精、苯、氮氧化物、氨等气体的浓度。 本文将介绍MQ135的两种使用方法 不使用库文件 使用别人写好的库文件 1.
4046 0
[MoeCTF 2022]chicken_soup 入土为安的第三天
[MoeCTF 2022]chicken_soup 入土为安的第三天
185 0
|
11月前
|
存储 运维 资源调度
阿里云服务器经济型e实例解析:性能、稳定性与兼顾成本
阿里云经济型e云服务器以其高性价比、稳定可靠的性能以及灵活多样的配置选项,成为了众多企业在搭建官网时的首选。那么,阿里云经济型e云服务器究竟怎么样?它是否能够满足企业官网的搭建需求?本文将从性能表现、稳定性与可靠性、成本考虑等多个方面对阿里云经济型e云服务器进行深入剖析,以供大家参考选择。
661 37
|
机器学习/深度学习 人工智能 文件存储
【小样本图像分割-3】HyperSegNAS: Bridging One-Shot Neural Architecture Search with 3D Medical Image Segmentation using HyperNet
本文介绍了一种名为HyperSegNAS的新方法,该方法结合了一次性神经架构搜索(NAS)与3D医学图像分割,旨在解决传统NAS方法在3D医学图像分割中计算成本高、搜索时间长的问题。HyperSegNAS通过引入HyperNet来优化超级网络的训练,能够在保持高性能的同时,快速找到适合不同计算约束条件的最优网络架构。该方法在医疗分割十项全能(MSD)挑战的多个任务中展现了卓越的性能,特别是在胰腺数据集上的表现尤为突出。
239 0
【小样本图像分割-3】HyperSegNAS: Bridging One-Shot Neural Architecture Search with 3D Medical Image Segmentation using HyperNet
|
存储 安全 数据库
Active Directory 域服务(二)
Active Directory 域服务(二)
470 0
|
SQL 安全 数据库连接
WEB常见漏洞之SQL注入(靶场篇—1)1
WEB常见漏洞之SQL注入(靶场篇—1)
699 0
|
编解码 iOS开发 MacOS
解放双手,提高生产力,看我如何用 Python 实现自动化剪视频
人类和动物最本质的区别就是人类懂的制造并使用工具,这是由上古时代一直延续至今的基因所决定的。 前段时间朋友的一个业务需要大量的原创短视频,问我是否可以帮忙弄下,我了解了具体需求之后发现不需要很高质量的内容,操作也不是很复杂,完全可以通过 Python 实现自动化操作,也是就把这个事给应承了下来。
778 0
解放双手,提高生产力,看我如何用 Python 实现自动化剪视频
|
机器人 测试技术 Python
Robot Framework(4)- 测试套件的基本使用
Robot Framework(4)- 测试套件的基本使用
696 0
Robot Framework(4)- 测试套件的基本使用

热门文章

最新文章