public delegate TResult Func <T, TResult>(T arg)

这是一个委托方法,这个方法有一个参数T(T arg),比如int arg,string arg等等;一个返回值TResult; 要想让输入的参数arg返回TResult,则必须将一个带有T arg参数的方法用委托的方式赋值给Func方法;比如如下的方法就符合Func<string,int>这个委托的定义:

private int GetAge(string age)
{
return Int32.Parse(age);
}

 下面用一个比较详细的实例来说明这个方法的用法,其中会用到Lambda表达式(只是匿名函数的一种表达方式而已,不必大惊小怪):

定义委托:

//这是一个计算年龄的方法
//输入一个字符串数组,其中的字符串分别经过指定的conveter委托方法的运算以后
//字符串值就变成了整数数组
public int[] GetGoodAge(string[] rawAges, FUNC<string, int> conveter)
{
List<string> result = new List<string>();
foreach(string age in rawAges)
{
result.Add(conveter(age));
}
return result.ToArray();
}

在主函数可以这样来写:

Main()
{
string[] ages = new string[] {"123lk","345op","909ka","234ja"};
//输入一组字符串数组
int[] result = GetGoodAge(ages, age=> Int32.Parse(age.Substring(,)));
//调用委托方法int[] GetGoodAge(string[],Func<string,int> conventer)
//这里conventer就是一个匿名函数,用的是Lambda表达式
//表示输入参数age,然后返回Int32.Parse(age.Substring(0,2))的值
//这个返回值输入到result数组中
foreach(int age in result)
{
Console.WriteLine(age);
}
}

其实这个委托方法的主要特点就是节省代码,如果有多个处理输入和输出的方法,直接将函数作为参数传进去就可以了,省去了反复调用的麻烦。

Func<T,TResult>的使用方法(转载)的更多相关文章

  1. 参考例子,学习Func<T, TResult>委托

    这些天,开发ASP.NET MVC,其间有查找资料,发现一个全新的Func<T, TResult> 委托.让我们在开发时,节省与简化很多. 在开发过程中,我们需要把一个泛型List< ...

  2. Func<T,TResult>泛型委托

    描述: 封装一个具有一个参数并返回TResult参数指定的类型值的方法. 语法: public delegate TResult Func<T,TResult>(T arg); 参数类型: ...

  3. Expression<Func<T,TResult>>和Func<T,TResult>

    1.Expression<Func<T,TResult>>是表达式 //使用LambdaExpression构建表达式树 Expression<Func<int, ...

  4. Func<T, TResult> 委托的由来和调用和好处(为了高大上,为了白富美)

    Func<T, TResult>是系统的内置委托的中最常用的一个.特点就是必须有一个返回值.(func委托有多个重载,所有重载的最后一个参数就是返回值的类型,前面的是参数类型).注:没有返 ...

  5. Func<T, TResult> 委托

    Func<T, TResult> 委托 Visual Studio 2008   命名空间:  System程序集:  System.Core(在 System.Core.dll 中) 语 ...

  6. Func<T,TResult>代理

    .NET平台已经发生了很多变化,最近决定好好的系统的学习一下了,开发做了这么多年,老实说很多时候都是在吃老本,这样下去不行的... 今天学习的是Func<T,TResult>,它是新的委托 ...

  7. C# 3.0 扩展方法[转载]

    实践 扩展方法是C# 3.0中新加入的特性.MSDN中对扩展方法的定义是:扩展方法使您能够向现有类型"添加"方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型. 以下以 ...

  8. Expression<Func<T,TResult>>和Func<T,TResult> 与AOP与WCF

    1>>Expression<Func<T,TResult>>和Func<T,TResult>http://www.cnblogs.com/xcsn/p/ ...

  9. “error LNK1169: 找到一个或多个多重定义的符号”的解决方法(转载)

    解决方案: “error LNK1169: 找到一个或多个多重定义的符号”的解决方法(转载) 遇到的问题: 在.h头文件中采用namespace 命名空间报错 test.h namespace LMR ...

随机推荐

  1. hdu-1179(匈牙利算法)

    题目链接: 思路:找n个巫师和m个魔棒匹配的问题,匈牙利算法模板 匈牙利算法:https://blog.csdn.net/sunny_hun/article/details/80627351 #inc ...

  2. UESTC 486 Good Morning (水题+坑!)

    题意:给你一行字符串,让你找其中蕴含的“good morning"的次数. 析:看起来很水么,多简单,只有统计一下其中字母的出现的次数,然后除以相应的个数. 但是很不幸的是WA,而且是在te ...

  3. DIV+CSS实战(一)

    一.说明 作为一个后台的程序员,我也是很少写前端,最近有一个项目,前端主要是由我来负责,就把我在项目中所学到的东西,记录下来!我的页面要嵌入到另一个系统中,所以,并不是按照传统的top,left,co ...

  4. chrome添加 postman扩展程序图文简介

    Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件.无论是web前端开发 或 android.ios开发,只要涉及调用后端接口,postman这类型工具就必不可少了.相对于 ...

  5. SpringMvc中controller之间的方法调用

    方法一, return new ModelAndView("redirect:"+新地址); 方法二, response.sendRedirect(新地址); return nul ...

  6. node API assert

    1.assert.throws(block, [error], [message]): assert.throws( function(){ throw new Error('wrong'); }, ...

  7. 短URL

    短网址应用已经在全国各大微博上开始流行了起来.例如QQ微博的url.cn,新郎的sinaurl.cn等. 我们在QQ微博上发布网址的时候,微博会自动判别网址,并将其转换,例如:http://url.c ...

  8. 创建TFS备份计划失败,错误提示:TF400997

    问题描述 在一个TFS 2018 + SQL Server 2017的环境中,从TFS控制台中配置备份计划时,系统提示错误TF400997,需要授予数据库服务账户sqlservice@domain.c ...

  9. 【AppCan 开发者】移动信息化随想

    现在的移动信息化,准确来说,是手机智能网络化.从08年到14年这6年时间里,手机发生翻天覆地的变化,成为移动设备智能中心,取得巨大成就,也成就一批公司,带动移动互联网的发展,引来众多人眼红热血投入.其 ...

  10. 使用MEF与Castle实现AOP

    MEF是微软的一个ioc框架,使用非常方便,我们只需要在需要导出的类上标记[Export],在需要使用的地方[import]就可以使用了.现在我们扩展MEF,在其装配生成实例时,使用Castle Dy ...