委托是我们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几个常用手法的更多相关文章

  1. delegate Func Action Expression

    using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; na ...

  2. C#中匿名函数、委托delegate和Action、Func、Expression、还有Lambda的关系和区别

    以前一直迷迷糊糊的,现在总算搞明白. Lambda表达式 Lamda表达式基本写法是()=>{ };Lambda和方法一样都可以传入参数和拥有返回值.(int x)=>{return x; ...

  3. C# delegate event func action 匿名方法 lambda表达式

    delegate event action func 匿名方法 lambda表达式 delegate类似c++的函数指针,但是是类型安全的,可以指向多个函数, public delegate void ...

  4. 浅谈C#中常见的委托<Func,Action,Predicate>(转)

    一提到委托,浮现在我们脑海中的大概是听的最多的就是类似C++的函数指针吧,呵呵,至少我的第一个反应是这样的. 关于委托的定义和使用,已经有诸多的人讲解过,并且讲解细致入微,尤其是张子阳的那一篇.我就不 ...

  5. C#基础-Func,Action

    Func,Action 的介绍及其用法 Func是一种委托,这是在3.5里面新增的,2.0里面我们使用委托是用Delegate,Func位于System.Core命名空间下,使用委托可以提升效率,例如 ...

  6. [转载]C#基础-Func,Action

    Func,Action 的介绍及其用法 Func是一种委托,这是在3.5里面新增的,2.0里面我们使用委托是用Delegate,Func位于System.Core命名空间下,使用委托可以提升效率,例如 ...

  7. 系统内置委托:Func/Action

    lSystem.Func 代表有返回类型的委托 lpublic delegate TResult  Func<out TResult>(); lpublic delegate TResul ...

  8. C# Task中的Func, Action, Async与Await的使用

    在说Asnc和Await之前,先说明一下Func和Action委托, Task任务的基础的用法 1. Func Func是一种委托,这是在3.5里面新增的,2.0里面我们使用委托是用Delegate, ...

  9. C#的泛型委托Predicate/Func/Action

    Predicate<T> 是一个委托,它代表了一个方法,它的定义是: namespace System {    // 摘要:    表示定义一组条件并确定指定对象是否符合这些条件的方法. ...

随机推荐

  1. TransitionsTest

    CCTransitionScene* createTransition(int nIndex, float t, CCScene* s) { // fix bug #486, without setD ...

  2. 我为什么鼓励程序员写blog

    工程师该怎样才能突破自己的能力瓶颈?写 blog! 工程师该怎样精进自己在职涯上所需要的能力?写 blog! 工程师该怎样才能保持学习与成长的动能?写 blog! 工程师该怎样才能证明自己的潜力与特质 ...

  3. Activiti初学者教程 (zhuan)

    http://blog.csdn.NET/bluejoe2000/article/details/39521405 ****************************************** ...

  4. 使用yum时出现的404

    今天使用yum升级nss yum update nss 结果爆出错误: http://people.centos.org/tru/devtools-2/6Server/x86_64/RPMS/repo ...

  5. 【C++程序员学 python】python 之奇葩地方

    一.python 奇葩之一:没有花括号.没有分号 先来一个C类型的函数 void main() { int i = 0; for(int j = 0; j< 6;j++) { i = i +j; ...

  6. ANSI文件操作

    ANSI文件操作 在ANSI C中,对文件的操作分为两种方式,即流式文件操作和I/O文件操作,下面就分别介绍之. 一.流式文件操作 这种方式的文件操作有一个重要的结构FILE,FILE在stdio.h ...

  7. MFC文档(SDI)应用:画图程序(画圆、画线、鼠标事件)

    要求 1. 在客户区输出一条顺时针45度的直线.一个正方形.一个大圆: 2. 在客户区输出一个图标: 3. 当按下鼠标左键时,将以鼠标坐标为圆心画直径为20个单位的小圆. 首先设置两个变量,用来保存颜 ...

  8. 跨服务器sql操作

    1.打开跨服务器功能 exec sp_configure 'show advanced options',1 reconfigure exec sp_configure 'Ad Hoc Distrib ...

  9. linux_UAPI_转

    转自:Linux Kernel UAPI 问题描述 从3.5开始,Linux Kernel 里多了一个 uapi 文件夹,里面放了很多 Linux Kernel 各个模块的头文件.如果是第一次碰到,可 ...

  10. OC基础--常用类的初步介绍与简单实用之集合类

    集合类的异同点 一.NSArray\NSMutableArray *有序 *快速创建(只有不可变数组可以):@[obj1, obj2, obj3]; *快速访问元素:数组名[i] *只能存放对象 二. ...