FuncT,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
FuncT,TResult泛型委托相关推荐
- Func〈T, TResult〉 泛型委托 以及演变历程
以下内容为菩提树下的杨过根据微软MSDN整理,转贴请注明出处 MSDN对于Func<T, TResult>)的官方解释: 封装一个具有一个参数并返回 TResult 参数指定的类型值的 ...
- C# 委托 (一)—— 委托、 泛型委托与Lambda表达式
C# 委托 (一)-- 委托. 泛型委托与Lambda表达式 2018年08月19日 20:46:47 wnvalentin 阅读数 2992 版权声明:此文乃博主之原创.鄙人才疏,望大侠斧正.此文可 ...
- 泛型委托在项目中的应用
Action<T> 泛型委托:封装一个方法,该方法只采用一个参数并且不返回值.可以使用此委托以参数形式传递方法,而不用显式声明自定义的委托.该方法必须与此委托定义的方法签名相对应.也就是说 ...
- 使用.NET中的Action及Func泛型委托
原文 http://www.cnblogs.com/skm-blog/archive/2013/05/24/3096294.html 委托,在C#编程中占有极其重要的地位,委托可以将函数封装到委托对象 ...
- 泛型委托 Predicate/Func/Action
Predicate 泛型委托 表示定义一组条件并确定指定对象是否符合这些条件的方法.此委托由 Array 和 List 类的几种方法使用,用于在集合中搜索元素. 看看下面它的定义: // Summ ...
- ExpressionFuncT,TResult和FuncT,TResult
1.Expression<Func<T,TResult>>是表达式 //使用LambdaExpression构建表达式树Expression<Func<int, i ...
- C#——Lambda表达式与泛型委托DEMO
问题描述 按要求编写Lambda表达式: .NET已定义的Func<out TResult>是一个泛型委托,它封装一个方法,该方法不具有参数,且返回由 TResult 参数指定的类型的值. ...
- 第十节:委托和事件(2)(泛型委托、Func和Action、事件及与委托的比较)
一. 泛型委托 所谓的泛型委托,即自定义委托的参数可以用泛型约束,同时内置委托Func和Action本身就是泛型委托. 将上一个章节中的Calculator类中的方法用自定义泛型委托重新实现一下. 1 ...
- C#泛型委托Predicate、Action、Func
Predicate Predicate泛型委托:表示定义一组条件并确定指定对象是否符合这些条件的方法.此委托由 Array 和 List 类的几种方法使用,用于在集合中搜索元素. 通过查看源码发现 P ...
最新文章
- 这引人联想的机械右手!玩转魔方,灵活不输人类,OpenAI:前所未有
- 使用Idea创建SpringCloud父子工程
- Objective-C 和 Swift 混编项目的小 Tips(一)
- 冒泡排序、选择排序和插入
- 一文足以了解什么是 Java 中的锁
- vue 配置跨域访问
- 【微信小程序】数据绑定
- Go的全新漏洞检测工具govulncheck来了
- 【转载】C++ 内存分配(new,operator new)详解
- 排队系统利用分布式设计的思考
- 环境微生物复习题及答案
- uni-app微信小程序配置(三)
- 数学规划模型(一):数学规划模型的基本知识
- 国产磁力架的用途,特点和使用方法
- Java锁Synchronized对象锁和类锁区别(搬运)
- 在文件选择打开方式里,无法添加.exe程序怎么解决
- 事件抽取与事理图谱(一)
- python中beautifulsoup是什么,Python Beautiful Soup简介
- 手把手带你实现西瓜视频的责任链埋点框架
- 如何用波士顿矩阵分析需求
热门文章
- c++ extern “C”
- C++ delete与 delete []区别
- 如何在私服上传jar包
- Scala方法定义,方法和函数的区别,将方法转换成函数
- JTable设置列宽、自动调整
- SQL Server 2014 Win7 Win10 安装详解 SQL Server 2017 2019 Linux及SQL TSQL ETL实用案例
- SSD 安装、训练、测试(ubuntu14.04+cuda7.5+openvc2.4.9)
- 移动端适配--flexible.js
- OpenSSL 之 RSA 相关命令学习笔记
- php变量的引用与计数规则