Func<T,TResult>泛型委托
描述:
封装一个具有一个参数并返回TResult参数指定的类型值的方法.
语法:
public delegate TResult Func<T,TResult>(T arg);
参数类型:
T:此委托封装的方法的参数类型.
TResult:此委托封装的方法的返回值类型.
参数:
arg:委托封装的方法的参数
返回值:此委托封装的方法的返回值
备注:
可以使用此委托构造一个能以参数形式传递的方法,而不用显式声明自定义的委托.该方法必须与此委托的方法签名想对应.
也就是说,封装的方法必须具有一个通过值传递给它的参数,并且具有返回值.
注意:
若要引用一个具有一个参数并返回void的方法,则需要使用泛型Action<T>委托.
上面接受的只是有一个参数,并有返回值的情况,其实Func委托共有以下形式:
public delegate TResult Func<TResult>();
public delegate TResult Func<T,TResult>(T arg);
public delegate TResult Func<T1,T2,TResult>(T1 arg1,T2 arg2);
public delegate TResult Func<T1,T2,T3,TResult>(T1 arg1,T2 arg2,T3 arg3);
public delegate TResult Func<T1,T2,T3,T4,TResult>(T1 arg1,T2 arg2,T3 arg3,T4 arg4);
即:当我们使用有一个、两个、三个、四个参数并有一个返回值时,可以不用自己定义委托,可以使用已定义好的委托。
例子:
protected void Page_Load(object sender, EventArgs e)
{
List<int> list = new List<int>();
list.AddRange(new int[] { 7, 6, 10, 1, 2, 3, 4, 5, 8 }); Func<int, bool> fi = new Func<int, bool>(MoreThan5);
IEnumerator<int> ie =list.Where<int>(fi).GetEnumerator(); //效果与list.Where<int>(fi).GetEnumerator()一致
//IEnumerator<int> ie = list.Where<int>(x => x > 5).GetEnumerator(); //效果与list.Where<int>(fi).GetEnumerator()一致
//IEnumerator<int> ie = list.Where(delegate(int i){return i > 5;}).GetEnumerator(); while(ie.MoveNext())
{
Response.Write(ie.Current.ToString()+"<br/>");
}
} public static bool MoreThan5(int i)
{
return i > 5;
}
页面输出:
7
6
10
8
Func<T,TResult>泛型委托的更多相关文章
- Predicate<T>与Func<T, bool>泛型委托
引用别人的: static void Main(string[] args) { List<string> l = new List<string>(); l.Add(&quo ...
- C#中Predicate<T>与Func<T, bool>泛型委托的用法实例
本文以实例形式分析了C#中Predicate<T>与Func<T, bool>泛型委托的用法,分享给大家供大家参考之用.具体如下: 先来看看下面的例子: 1 2 3 4 5 6 ...
- (C#) Action, Func, Predicate 等泛型委托
(转载网络文章) (1). delegate delegate我们常用到的一种声明 Delegate至少0个参数,至多32个参数,可以无返回值,也可以指定返回值类型. 例:public del ...
- .NET中的泛型委托
.Net中有一个内置的委托 Func 它总共有以下5种形式 1. Func<TResult> 2. Func<T,TResult> 3. Func<T1,T2,TR ...
- 参考例子,学习Func<T, TResult>委托
这些天,开发ASP.NET MVC,其间有查找资料,发现一个全新的Func<T, TResult> 委托.让我们在开发时,节省与简化很多. 在开发过程中,我们需要把一个泛型List< ...
- 泛型委托 Predicate/Func/Action
Predicate 泛型委托 表示定义一组条件并确定指定对象是否符合这些条件的方法.此委托由 Array 和 List 类的几种方法使用,用于在集合中搜索元素.看看下面它的定义: // Summar ...
- C#的泛型委托Predicate/Func/Action(转)
Predicate 泛型委托:表示定义一组条件并确定指定对象是否符合这些条件的方法.此委托由 Array 和 List 类的几种方法使用,用于在集合中搜索元素. 类型参数介绍: T: 要比较的对 ...
- .NET中的Action及Func泛型委托
委托,在C#编程中占有极其重要的地位,委托可以将函数封装到委托对象中,并且多个委托可以合并为一个委托,委托对象则可以像普通对象一样被存储.传递,之后在任何时刻进行调用,因此,C#中函数回调机制的实现基 ...
- 使用.NET中的Action及Func泛型委托
委托,在C#编程中占有极其重要的地位,委托可以将函数封装到委托对象中,并且多个委托可以合并为一个委托,委托对象则可以像普通对象一样被存储.传递,之后在任何时刻进行调用,因此,C#中函数回调 ...
随机推荐
- git 新建服务器的版本以及项目的用户
一, git客户端账号生成 1. git的客户端的公钥生成 ssh-keygen -t rsa -C "test@gmail.com" mac机器会在 /Users/用户/.ssh ...
- RxJava 和 RxAndroid 一 (基础)
1.RxJava 项目地址 https://github.com/ReactiveX/RxJava 2.RxAndroid 项目地址 https://github.com/ReactiveX/R ...
- CGAffineTransform方法汇总
CGAffineTransform是二维的仿射变换,可以进行位移,旋转,缩放,CGAffineTransform实际上是一个矩阵. CGAffineTransform { CGFloat a, b, ...
- Android Build Error(1)
Type 1 —— Build Path Problem : **.jar包文件缺失 1.在Android项目根目录下新建一个libs文件夹: 2.把你需要的导入的第三方Jar包复制进这个目录: 3. ...
- 1、开篇:PMO定义 - PMO项目管理办公室
PMO,Project Management Office,项目管理办公室,笔者不按照项目管理知识体系指南PMBOK(Project Management Body Of Knowledge)上的定义 ...
- [css]我要用css画幅画(二)
接着之前的[css]我要用css画幅画(一) , 今天,我又画一个房子,很简单,屋顶.墙壁.门. 现在开始,做得效果都只兼容chrome,所以下面的css3的属性可能只有-webkit-前缀. 我只是 ...
- JAVA 8 方法引用 - Method References
什么是方法引用 简单地说,就是一个Lambda表达式.在Java 8中,我们会使用Lambda表达式创建匿名方法,但是有时候,我们的Lambda表达式可能仅仅调用一个已存在的方法,而不做任何其它事,对 ...
- Bug #19528825 "UNABLE TO PURGE A RECORD"
概述: 在生产环境中,当开启insert buffer时(参数innodb_change_buffering=all),部分实例偶尔会出现“UNABLE TO PURGE A RECORD”错误.这个 ...
- jQuery简单入门(四)
4.表单应用 表单是HTML的重要组成部分,在采集.提交用户输入的信息和显示列表数据等需求中有重要作用 表单应用 一个简单的表单HTML示例: <form action=”url” method ...
- Sql server之sql注入篇
SQL Injection 关于sql注入的危害在这里就不多做介绍了,相信大家也知道其中的厉害关系.这里有一些sql注入的事件大家感兴趣可以看一下 防范sql注入的方法无非有以下几种: 1.使用类型安 ...