.Net内置泛型托付Func,Action,Predicate的使用

4周前 (11-16 17:55)阅读1回复0
海上森林一只猫
海上森林一只猫
  • 管理员
  • 注册排名5
  • 经验值94395
  • 级别管理员
  • 主题18879
  • 回复0
楼主

一、根本常识

1.那三个都是.Net内置的泛型拜托,便利我们间接利用,而不需要在利用拜托时还要做如下定义

public delegate string GetName(string bookId);

2.FuncT是有返回值的泛型拜托,格局为FuncT1,T2,T..N,TResult,T1,T2,T..N为多个参数,TResult为返回值

3.AtionT是没有返回值的泛型拜托,格局为ActionT1,T2,T..N,T1,T2,T..N为多个参数

4.PredicateT是返回值为Bool的泛型拜托,相当于FuncT,bool,次要用于校验,查抄等

二、利用理解

泛型拜托的利用,和抽像类的笼统办法有异曲同工之妙,即将营业改变的实现部门抽离到外部,内部法式主体框架连结稳定,做到办法注进,属性注进

共同匿名办法的利用,可进一步使外部的实现部门也变得十分简洁,在Linq的扩展办法有大量利用

例如:有一个揣度单号合法的办法(除了揣度,还要写LOG,计数等),因为每种单据差别,揣度逻辑也是纷歧样的,演示办法注进

//办法定义

public static bool CheckOrderNo(Funcstring, bool fun, string orderNo)

bool re = fun(orderNo);

//TODO:Log

//TODO:Count

return re;

//利用匿名办法//揣度能否为AA单(长度为10,首字母为"AA"var result= CheckOrderNo(x = x.Length == 10 x.Substring(0, 2).ToUpper.Equals("AA"), "AB126552DFD15");//揣度能否为AD单(长度为16,6~10字母为"ADGH")var result= CheckOrderNo(x = x.Length == 16 x.Substring(5, 4).ToUpper.Equals("ADGH"), "AB126ADGH552DFD");//利用通俗做法public bool CheckAAOrderNo(string orderNo){return orderNo.Length == 10 orderNo.Substring(0, 2).ToUpper.Equals("AA")}var result= CheckOrderNo(CheckAAOrderNo, "AB126552DFD15");

出处:

版权声明:本文来源于网友搜集或网友供给,仅供进修交换之用,假设有侵权,请转告版主或者留言,本公家号立即删除。

撑持小薇

腾讯云福利 :

【腾讯云】多款云产物1折起,买云办事器送免费机器,最长免费续 3个月

存眷公家号: DotNet开发跳槽

觉得不错,请点个在看 呀

0
回帖

.Net内置泛型托付Func,Action,Predicate的使用 期待您的回复!

取消
载入表情清单……
载入颜色清单……
插入网络图片

取消确定

图片上传中
编辑器信息
提示信息