- 浏览: 79208 次
文章分类
- 全部博客 (136)
- 我的技术资料收集 (98)
- 具体技术 (1)
- 的技术资料收集 (4)
- All Articles (1)
- 机器学习 Machine Learning (1)
- 网络编程 (1)
- java (2)
- ava (1)
- 零散技术 (1)
- C# (3)
- 技术资料收集 (1)
- CQRS (1)
- 数据库技术(MS SQL) (1)
- .Net微观世界 (1)
- Oracle SQL学习之路 (1)
- C/C++ (1)
- JS/JQ (1)
- Js封装的插件/实例/方法 (2)
- 敏捷个人 (2)
- Javascript (1)
- 程序设计---设计模式 (1)
- Bug (1)
- 未知分类 (1)
- 程序设计 (1)
- Sharepoint (1)
- Computer Graphic (1)
- IT产品 (1)
- [06]JS/jQuery (1)
- [07]Web开发 (1)
- .NET Solution (1)
- Android (3)
- 机器学习 (1)
- 系统框架设计 (1)
- Others (1)
- 算法 (1)
- 基于Oracle Logminer数据同步 (1)
- 网页设计 (1)
- 原创翻译 (1)
- EXTJS (1)
- Jqgrid (1)
- 云计算 (1)
最新评论
Func<T1, T2, TResult> 委托
封装一个具有两个参数并返回 TResult 参数指定的类型值的方法。
语法
T1 arg1,
T2 arg2
)
in T1
此委托封装的方法的第一个参数类型。
该类型参数是逆变。即可以使用指定的类型或派生程度更低的类型。有关协变和逆变的更多信息,请参见泛型中的协变和逆变。
in T2
此委托封装的方法的第二个参数类型。
out TResult
此委托封装的方法的返回值类型。
该类型参数是协变。即可以使用指定的类型或派生程度更高的类型。有关协变和逆变的更多信息,请参见泛型中的协变和逆变。
参数
arg1类型:T1
此委托封装的方法的第一个参数。
arg2类型:T2
此委托封装的方法的第二个参数。
返回值
类型:TResult
此委托封装的方法的返回值。
备注
可以使用此委托表示一种能以参数形式传递的方法,而不用显式声明自定义委托。封装的方法必须与此委托定义的方法签名相对应。也就是说,封装的方法必须具有两个均通过值传递给它的参数,并且必须返回值。
在使用 Func<T1, T2, TResult> 委托时,不必显式定义一个封装具有两个参数的方法的委托。例如,以下代码显式声明了一个名为 ExtractMethod 的委托,并将对 ExtractWords 方法的引用分配给其委托实例。
示例
下面的示例演示如何声明和使用 Func<T1, T2, TResult> 委托。此示例声明一个 Func<T1, T2, TResult> 变量,并将其分配给一个采用 String 值和 Int32 值作为参数的 lambda 表达式。如果 String 参数的长度等于 Int32 参数的值,则此 lambda 表达式将返回 true。随后在查询中使用封装此方法的委托来筛选字符串数组中的字符串。
using System.Collections.Generic;
using System.Linq;
public class Func3Example
{
public static void Main()
{
Func<String, int, bool> predicate = (str, index) => str.Length == index;
String[] words = { "orange", "apple", "Article", "elephant", "star", "and" };
IEnumerable<String> aWords = words.Where(predicate).Select(str => str);
foreach (String word in aWords)
Console.WriteLine(word);
}
}
了解完这些以后,我们来看看它的应用。
不知道童鞋们有没有遇到这样的问题,在读取数据访问层中数据集合时,发现该方法需要返回的结果中包括对象及其外键对象时,又不想添加一个实体类来封装它,那么有什么别的好办法吗?也许您会选择用动态对象(dynamic关键字),不错,这个这确实可以解决这个问题,但是有一个弊端,且不论动态对象在运行时编译,在编写程序时,它存在一个很不方便的体验,它不能点(.)出它的属性,不免产生意外的拼写错误或是寻找-复制-黏贴的麻烦。
那么怎么办呢?我们可以利用Func<T1, T2, TResult> 委托来帮助我们实现。
{
var results = from u in User
join p in Person on u.Id equals p.uId
select new { User = u, Person = p };
IList<TResult> resultItems = new List<TResult>();
foreach (var item in results.ToList())
{
resultItems.Add(itemFactory(item.User, item.Person));
}
return resultItems;
}
{
return new { u.Id, u.LoginName, pId = p.Id, p.Name };
});
此外,当然也可以自定义更多的委托,这里笔者就不详细介绍了,读者可自行尝试。
哈哈,这样是否有帮到您呢?本人文笔粗糙简陋,请多多大虾们指教!
本文链接:http://www.cnblogs.com/f-ye/p/func.html,转载请注明。
发表评论
-
C#WebBrowser控件使用教程与技巧收集--苏飞收集 - sufeinet
2013-06-28 12:07 1017原帖地址:http://www.cnblogs.com/suf ... -
我要喷一个自认为很垃圾的网站架构 - 老赵【苏州】
2013-06-28 12:01 1083原帖地址:http://www.cnblogs.com/lao ... -
[翻译] Oracle Database 12c 新特性Multitenant - Cheney Shue
2013-06-28 11:43 590原帖地址:http://www.cnblogs.com/ese ... -
memcahd 命令操作详解 - 阿正-WEB
2013-06-28 11:37 432原帖地址:http://www.cnblogs.com/azh ... -
面向过程的代码符合大众的思维方式吗? - 史蒂芬.王
2013-06-27 10:28 553原帖地址:http://www.cnblogs.com/ste ... -
面向过程的代码符合大众的思维方式吗? - 史蒂芬.王
2013-06-27 10:28 524原帖地址:http://www.cnblogs.com/ste ... -
RPG游戏之组队测试 - zthua
2013-06-27 10:22 517原帖地址:http://www.cnblogs.com/zth ... -
IT人们给个建议 - SOUTHER
2013-06-26 14:06 487原帖地址:http://www.cnblogs.com/sou ... -
Java向前引用容易出错的地方 - 银河使者
2013-06-26 14:00 456原帖地址:http://www.cnblogs.com/nok ... -
【web前端面试题整理03】来看一点CSS相关的吧 - 叶小钗
2013-06-25 10:45 737原帖地址:http://www.cnblogs.com/yex ... -
Windows 8 动手实验系列教程 实验6:设置和首选项 - zigzagPath
2013-06-25 10:27 577原帖地址:http://www.cnblogs.com/zig ... -
闲聊可穿戴设备 - shawn.xie
2013-06-25 10:21 516原帖地址:http://www.cnblo ... -
CentOS下Mysql安装教程 - 小学徒V
2013-06-23 15:24 564原帖地址:http://www.cnblogs.com/xia ... -
vmware安装ubuntu12.04嵌套安装xen server(实现嵌套虚拟化) - skyme
2013-06-23 15:18 796原帖地址:http://www.cnblogs.com/sky ... -
之前专门为IE6、7开发的网站如何迁移到IE10及可能遇到的问题和相应解决方案汇总 - 海之澜
2013-06-23 15:12 903原帖地址:http://www.cnblogs.com/wuz ... -
Android学习笔记--解析XML之SAX - 承香墨影
2013-06-23 15:01 364原帖地址:http://www.cnblo ... -
SQL Server 性能优化之——T-SQL TVF和标量函数
2013-06-19 09:32 616原帖地址:http://www.cnblogs.com/Boy ... -
Nginx学习笔记(二) Nginx--connection&request
2013-06-19 09:26 606原帖地址:http://www.cnblogs.com/cod ... -
从郭美美霸气侧漏看项目管理之项目经理防身术
2013-06-19 09:20 462原帖地址:http://www.cnblogs.com/had ... -
1、图解Oracle Logminer配置使用
2013-06-18 10:37 1554原帖地址:http://www.cnblogs.com/shi ...
相关推荐
#include <stdio.h> #include <stdlib.h> #include <assert.h> #include <string.h> typedef struct matrix { int row; int col; } matrix; typedef struct minCost { int cost; int mid; } minCost; minCost** ...
#include <stdio.h> #include <malloc.h> struct DATA { int ID; char name[4]; char sex[3]; int score; }; void paixu(int*,DATA*,int); int sishewuru(double); void func1(int*,int*,DATA*,int*,int,...
Func<Result>,Func<T1>是一个.Net内置的泛型委托。 Func<TResult> Func<T> Func<T1> Func<T1> Func<T1> 它有5种形式,只是参数个数不同;第一个是无参数,但是有返回值; 下面是一个简单的普通委托来传方法的示例...
void ActivationEventBeginInvoke(Func<int> id,Action<IEnumerable<T>> TValue = null, Action<IAsyncResult> Ting=null); IEnumerable<T> GetChildList(); void GetChildList(Action<IEnumerable<T>> TValue)...
这个方法可以从Func<T1 , T2 , TResult>委托中引用,其中T1 和T2 的类型相同:Func<T , T , bool>。 给Sort<T>方法指定下述签名: public static void Sort<T>(IList<T> sortArray, Func<T, T, bool> comparsion...
将Expression<Func<T>>表达式转为Expression<Func<T, object>>
version.php<br/>\my.php<br/>\pm.php<br/>\search.php<br/>\stats.php<br/>\...func.php<br/>\include\common.inc.php<br/>\include\common.js<br/>\include\discuzcode.func.php<br/>\include\editor.func.php<br/>\...
.NET Standard 2.1、.NET 5、.NET 6、.NET 7 版本SQLBuilder,Expression表达式转换为SQL语句,支持SqlServer、MySql、Oracle、Sqlite、PostgreSql;基于Dapper实现了不同数据库对应的数据仓储Repository;
#region 3.2 根据指定条件 修改 +int ModifyBy(Expression<Func<T, bool>> whereLambda) /// <summary> /// 2.3 根据指定条件 修改 /// </summary> /// <param name="whereLambda">条件表达式</param> /// ...
<br/><br/>\admin 目录<br/>\admin\database.inc.php<br/>\admin\forums....func.php<br/>\include\category.inc.php<br/>\include\common.inc.php<br/>\include\cron.func.php<br/>\include\discuzcode.func.php<br/>\...
naval_fate ship <name> move <x> <y> [--speed=<kn>] naval_fate ship shoot <x> <y> naval_fate mine (set|remove) <x> <y> [--moored|--drifting] naval_fate -h | --help naval_fate --version Options: -...
|----> init_func_example.c -- 初始化函数示例 |----> key_code.c -- 显示键盘字符代码的程序 |----> mouse_menu.c -- 一个可以使用鼠标访问的菜单 |----> other_border.c -- 展示与box()函数不同的显示边框的...
--<include file="$(find darknet_ros)/launch/yolo_v4.launch" />--> <node name="img_test" pkg="img_test" type="target_ROI" output="screen"> <!--功能选择,,value=0 发布compress还原后的图像,value=1制作...
<div class='top_bar_text' id='365riliUserName'></div> <div class='top_bar_text' id='bd_login'>登录</div> </div> </div> </div> <div id='cal_down'> <div id='cal_downleft'> <div id='mainCal'></...
node-soap-cli SOAP端点的命令行客户端 ... " GetQuoteResult " : " <StockQuotes><Stock><Symbol>GOOG</Symbol><Last>595.50</Last><Date>9/29/2015</Date><Time>9:36am</Time><Change>+0.61</Change><Open>597
如qsort 等函数需要函数指针才能回调 用此函数库可以将成员函数指针转为普通函数指针 ... *static_cast<const T*>(a)-*static_cast<const T*>(b) : *static_cast<const T*>(b)-*static_cast<const T*>(a); }
本例子建立2个VC++2010的DLL工程。包含了可以导出的函数、一般C++类和含有对话框资源的类。 各导出代码部分相互独立。 有word文档说明。说明列出了与DLL导出有关的部分,并在例程中以诸如“// DLL_Func_01-----...…… ...
ref就是复制 复制是不会影响原始数据的 <template> <div> <div> <div>{{stateObj}}</div> <button @click="func1">按钮</button> </div> </div> </template> <script> import {ref} from 'vue' export ...
求下面函数的返回值(微软)<br>int func(x) <br>{ <br> int countx = 0; <br> while(x) <br> { <br> countx ++; <br> x = x&(x-1); <br> } <br> return countx; <br>} <br>假定x = 9999。 答案:8<br>思路:将x转化...