.NET自带泛型委托方法Func、Action和Predicate
2024-08-21 12:15:54
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;
};
最新文章
- insmod模块的几种常见错误
- BZOJ 3343: 教主的魔法 [分块]【学习笔记】
- SQL Server选项综述
- Oracle/SQL 修改字段类型和长度
- Theano2.1.4-基础知识之图结构
- 【LeetCode】88 - Merge Sorted Array
- PL/pgSQL RETURNS TABLE 例子
- 开发C# .net时使用的数据库操作类SqlHelp.cs
- linux内核--进程地址空间(三)
- Delphi中禁止WebBrowser右键的方法
- 如何通过注解Bean类来封装SQL插入语句
- 【Linux】gdb调试
- CentOS 7 输入中文 &; 安装搜狗输入法
- 学会数据库读写分离、分表分库——用Mycat
- JS 中函数名后面加与不加括号的区别
- Unity 精灵物体的创建 Sprite.create
- 堆排序,图解,C/C++实现
- SQL server类型转换
- 在Win7系统下, 使用VS2015 打开带有日文注释程序出现乱码的解决方案
- nginx使用https功能
热门文章
- postman-变量/环境/过滤等
- 机器学习算法-Adaboost
- 椭圆参数方程中的θ(离心角Theta)
- LUA速成教程
- 【BZOJ2870】最长道路tree 点分治+树状数组
- git commit -a -m ";M 1、引入mixin,公共样式mixin传参处理;";;git push origin master:master
- php cmd 不能利用$_COOKIE 的处理 通过文件来暂存字符串
- CSS3 Flex布局(项目)
- JavaScript和jQuery改变标签内容
- WIN文件放到LINUX中无法CAT过滤的解决方法