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 { // 摘要: 表示定义一组条件并确定指定对象是否符合这些条件的方法. ...
随机推荐
- Azure Nosql
patterns & practices https://msdn.microsoft.com/en-us/library/ff921345.aspx Solution Development ...
- cancas绘制折线图
知识点回顾: 知识点1: measureText() 方法返回包含一个对象,该对象包含以像素计的指定字体宽度. 提示:如果您需要在文本向画布输出之前,就了解文本的宽度,那么请使用该方法. JavaSc ...
- feginclient和hystrix的配置
1.如果设置了 feign: hystrix: enabled: true 则 @FeignClient(value = "service-hi",configuration = ...
- form的method用get导致中文乱码
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- android中activity向service中传值
和activity中互相传值类似 在activity中 Intent regIntent = new Intent(this, ChatService.class); regIntent.putEx ...
- Android开发日记(五)
从服务器端传递多个数据 先在服务器端设置cs文件 using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using Syst ...
- Android集成银联支付,提示java.lang.UnsatisfieldLinkError错误
尽管解决方法很简单,但还是记录一下吧. 最近做银联支付(Android),官方给的demo是eclipse的.按照官方(https://open.unionpay.com/ajweb/product) ...
- 【Visual Studio】VS常用调试技巧——笔记
CSDN的文档: https://msdn.microsoft.com/en-us/library/aa295838(v=vs.60).aspx 情景一:[监视]变量时,当运行离开当前函数后,怎么看到 ...
- Java GUI画圆。
package ydj; import java.awt.*; import javax.swing.*; public class huayuan extends JFrame { public h ...
- 一个CSS3滤镜Drop-shadow阴影效果
<html> <head> <title>CSS3 Drop-shadow阴影</title> <style type="text/cs ...