Func、Action和Predicate是.NET自带的3个泛型委托方法,三个方法的区别其实并不大,要强行给混着用也是可以的,但是我们是有追求的人,把道理讲清楚总是好的。

一、Func是有返回值的方法(类似于Delphi里面的function),Func最多支持16个泛型参数和1个泛型返回值(最后一个固定为返回值),并且支持Lambda表达式

//无参数用法
Func<string> funcNone = delegate()
{
return "我是来打酱油的";
};
//无参数Lambda用法
Func<string> funcNoneLambda = () => "我是来打酱油的"; //一个参数用法
Func<string, bool> funcOne = delegate(string s)
{
return s.Contains("酱油");
};
//一个参数Lambda用法
Func<string, bool> funcOneLambda = s => s.Contains("酱油"); //两个参数用法
Func<int, int, int> funcTwo = delegate(int one, int two)
{
return one + two;
};
//两个参数Lambda用法
Func<int, int, int> funcTwoLambda = (one, two) => one + two;

二、Action是无返回值的方法(类似于Delphi里面的procedure),Action也是最多支持16个泛型参数,并且支持Lambda表达式

//一个参数用法
Action<string> actionOne = delegate(string s)
{
Console.Write(s);
};
//一个参数Lambda用法
Action<string> actionOneLambda = c => Console.Write(c);

三、Predicate比较特殊,它只有一个参数,而且只返回一个布尔值,并且支持Lambda表达式

//Predicate用法
Predicate<string[]> predicate = delegate(string[] s)
{
var result = from p in s where p.Contains("c") select p;
return result.ToList().Count > ? true : false;
}; //Predicate Lambda用法
Predicate<string[]> predicateLambda = s =>
{
var result = from p in s where p.Contains("c") select p;
return result.ToList().Count > ? true : false;
};

最新文章

  1. insmod模块的几种常见错误
  2. BZOJ 3343: 教主的魔法 [分块]【学习笔记】
  3. SQL Server选项综述
  4. Oracle/SQL 修改字段类型和长度
  5. Theano2.1.4-基础知识之图结构
  6. 【LeetCode】88 - Merge Sorted Array
  7. PL/pgSQL RETURNS TABLE 例子
  8. 开发C# .net时使用的数据库操作类SqlHelp.cs
  9. linux内核--进程地址空间(三)
  10. Delphi中禁止WebBrowser右键的方法
  11. 如何通过注解Bean类来封装SQL插入语句
  12. 【Linux】gdb调试
  13. CentOS 7 输入中文 &amp; 安装搜狗输入法
  14. 学会数据库读写分离、分表分库——用Mycat
  15. JS 中函数名后面加与不加括号的区别
  16. Unity 精灵物体的创建 Sprite.create
  17. 堆排序,图解,C/C++实现
  18. SQL server类型转换
  19. 在Win7系统下, 使用VS2015 打开带有日文注释程序出现乱码的解决方案
  20. nginx使用https功能

热门文章

  1. postman-变量/环境/过滤等
  2. 机器学习算法-Adaboost
  3. 椭圆参数方程中的θ(离心角Theta)
  4. LUA速成教程
  5. 【BZOJ2870】最长道路tree 点分治+树状数组
  6. git commit -a -m &quot;M 1、引入mixin,公共样式mixin传参处理;&quot;;git push origin master:master
  7. php cmd 不能利用$_COOKIE 的处理 通过文件来暂存字符串
  8. CSS3 Flex布局(项目)
  9. JavaScript和jQuery改变标签内容
  10. WIN文件放到LINUX中无法CAT过滤的解决方法