delegate、Func、Action几个常用手法
委托是我们C#开发当中使用频率非常的高一个手段,好处我就不列举了。
委托早期版本中只有delegate,后期版本有了Func(有返回值)和Action(无返回值)两委托方法。
我这里将列举它们三个常用的表现方式,还是老规矩上代码:
class Program
{
private delegate int GetSum(List<Product> list); // First Definition Delegate
static void Main(string[] args)
{
//C# delegate List<Product> list = new List<Product>()
{
new Product{ProductName="Iphone4s", Price=},
new Product{ProductName="Iphone5",Price=},
new Product{ProductName="Ipad4",Price=}
};
GetSum s = GetTotal;
Console.WriteLine(s(list)); //C# Func //Method A
Func<List<Product>, int> func = GetTotal;
Console.WriteLine(func(list)); //Method B
Func<List<Product>, int> func1 = delegate(List<Product> listA)
{ return listA.Sum(p => p.Price);
};
Console.WriteLine(func1(list)); //Method C
Func<List<Product>,int> func2=listB=>{ return listB.Sum(p => p.Price);
};
Console.WriteLine(func2(list)); //C# Action Action<List<Product>> action = listC =>
{
listC.ForEach(p => Console.WriteLine(p.Price));
}; action(list);
Console.Read(); } public static int GetTotal(List<Product> list)
{
return list.Select(p => p.Price).Sum();
}
} public class Product
{
public string ProductName{get;set;}
public int Price{get;set;}
}
delegate、Func、Action几个常用手法的更多相关文章
- delegate Func Action Expression
using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; na ...
- C#中匿名函数、委托delegate和Action、Func、Expression、还有Lambda的关系和区别
以前一直迷迷糊糊的,现在总算搞明白. Lambda表达式 Lamda表达式基本写法是()=>{ };Lambda和方法一样都可以传入参数和拥有返回值.(int x)=>{return x; ...
- C# delegate event func action 匿名方法 lambda表达式
delegate event action func 匿名方法 lambda表达式 delegate类似c++的函数指针,但是是类型安全的,可以指向多个函数, public delegate void ...
- 浅谈C#中常见的委托<Func,Action,Predicate>(转)
一提到委托,浮现在我们脑海中的大概是听的最多的就是类似C++的函数指针吧,呵呵,至少我的第一个反应是这样的. 关于委托的定义和使用,已经有诸多的人讲解过,并且讲解细致入微,尤其是张子阳的那一篇.我就不 ...
- C#基础-Func,Action
Func,Action 的介绍及其用法 Func是一种委托,这是在3.5里面新增的,2.0里面我们使用委托是用Delegate,Func位于System.Core命名空间下,使用委托可以提升效率,例如 ...
- [转载]C#基础-Func,Action
Func,Action 的介绍及其用法 Func是一种委托,这是在3.5里面新增的,2.0里面我们使用委托是用Delegate,Func位于System.Core命名空间下,使用委托可以提升效率,例如 ...
- 系统内置委托:Func/Action
lSystem.Func 代表有返回类型的委托 lpublic delegate TResult Func<out TResult>(); lpublic delegate TResul ...
- C# Task中的Func, Action, Async与Await的使用
在说Asnc和Await之前,先说明一下Func和Action委托, Task任务的基础的用法 1. Func Func是一种委托,这是在3.5里面新增的,2.0里面我们使用委托是用Delegate, ...
- C#的泛型委托Predicate/Func/Action
Predicate<T> 是一个委托,它代表了一个方法,它的定义是: namespace System { // 摘要: 表示定义一组条件并确定指定对象是否符合这些条件的方法. ...
随机推荐
- ssh-copy-id 安全地复制公钥到远程服务器上
[root@NB .ssh]# ssh-copy-id -i id_rsa.pub " -p22 root@150.57.38.226" root@150.57.38.226's ...
- How to Acquire or Improve Debugging Skills
http://blogs.msdn.com/b/debuggingtoolbox/archive/2007/06/08/recommended-books-how-to-acquire-or-impr ...
- C#解压或压缩文件夹
这里主要解决文件夹包含文件夹的解压缩问题.1)下载SharpZipLib.dll,在http://www.icsharpcode.net/OpenSource /SharpZipLib/Downloa ...
- linux下调试core的命令
在程序不寻常退出时,内核会在当前工作目录下生成一个core文件(是一个内存映像,同时加上调试信息).使用gdb来查看core文件,可以指示出导致程序出错的代码所在文件和行数. 1.core文件的生成开 ...
- hdoj1075 What Are You Talking About
What Are You Talking About Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 102400/204800 K ...
- maven打包可以行文件,包含依赖包等
<build> <!-- 设定打包的名称 --> <finalName>ismp2xy</finalName> <plugins> < ...
- 在jsp里面不要瞎用<!-- -->注释
如图: SEVERE: Servlet.service() for servlet jsp threw exceptionorg.apache.jasper.JasperException: /ch1 ...
- BAT-给文件右击菜单增加7-ZIP浏览功能
Reg给文件右击菜单增加7-ZIP浏览功能 Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\*\shell\用7-ZIP浏览(ZJQ)] ...
- iosttableViewCell右侧的箭头,圆形等
cell.accessoryType = UITableViewCellAccessoryNone;//cell没有任何的样式 cell.accessoryType = UITableViewCell ...
- jquery超炫的列表筛选插件
今天要为大家带来一款非常实用的jquery列表筛选插件,效果非常好.单击某项的时候动画筛选该项的列表.我们一起看下效果图: 在线预览 源码下载 我们一起看下实现的代码: html代码: <d ...