什么是委托:

包含单个方法的委托和函数指针是相似的,不同的是,委托是面向对象的并且是类型安全的

声明委托类型:

delegate void mydel(int x);

声明委托和声明方法差不多,两个不通点就在于

委托以:delegate关键词开头。没有方法主体

创建委托对象:

del =new mydel(示例方法);

组合委托:

mydel  dela=方法;

mydel delb=方法

mydel delc=dela+delb;

委托增减方法

mydel del=方法//创建初始化

del+=方法;//增加方法

del-=方法;//删减方法

匿名方法:

delegate int del(int param);

static void main()

{

del  mydel=delgate(intx){return x+20};

....

}

lambda方法:

mydel del=delegate(int x){return x+1;}//匿名方法

mydel del=            (int x)=>{return +1;}//lambda表达式(方法)

控制台

  class Program
{
static void Main(string[] args)
{
Console.WriteLine("传统委托代码示例:");
FindListDelegate();
Console.Write("\n"); Console.WriteLine("使用匿名方法的示例:");
FindListAnonymousMethod();
Console.Write("\n"); Console.WriteLine("使用Lambda的示例");
FindListLambdaExpression(); Console.Read(); }
//传统的调用委托的实例
static void FindListDelegate()
{
//创建泛型list类
List<string> list = new List<string>(); list.AddRange(new string[] { "asp.net课程","Java课程","" });
Predicate<string> findPredicate = new Predicate<string>(IsBookCategory);
List<string> bookCategory = list.FindAll(findPredicate); foreach (string str in bookCategory)
{
Console.WriteLine("{0}\t", str);
}
}
//谓词方法,传递给FindALl进行书籍分类判断
static bool IsBookCategory(string str)
{
return str.EndsWith("课程") ? true : false;
} //使用匿名方法来进行搜索过程 static void FindListAnonymousMethod()
{
//先创建泛型list类
List<string> list = new List<string>();
list.AddRange(new string[] { "asp.net课程", "MVC课程,123" }); //在这里,使用匿名方法直接为委托创建一个代码块,而不用去创建单独的方法 List<string> bookCategory = list.FindAll(delegate(string str)
{
return str.EndsWith("课程") ? true : false;
}
);
foreach (string str in bookCategory)
{
Console.WriteLine("{0}\t", str);
}
}
//使用lambda来实现搜索过程
static void FindListLambdaExpression()
{ //先创建一个泛型的list类
List<string> list = new List<string>();
list.AddRange(new string[] { "asp.net课程", "MVC课程","" });
//在这里使用lambda来创建一个委托方法 List<string> bookCategory = list.FindAll((string str) => str.EndsWith("课程")); foreach (string str in bookCategory)
{
Console.WriteLine("{0}\t", str);
}
} }

委托,匿名方法,lambda表达式

:刚开始委托其实很难理解,网上也有一大堆,但是有些过于繁琐

最通俗的来理解  到底 委托,匿名方法和lambda之间三者的关系:

起先,  1:   委托简化代码的编写量

     2: 后来觉得代码多了,搞一个匿名方法

     3: 再后来,匿名方法也麻烦,就搞了一个lambda表达式,

        完了,lambda简单吧,所以就是这样

2017-2-22补充

c#-委托,匿名方法,lambda表达的关系的更多相关文章

  1. 委托-异步调用-泛型委托-匿名方法-Lambda表达式-事件【转】

    1. 委托 From: http://www.cnblogs.com/daxnet/archive/2008/11/08/1687014.html 类是对象的抽象,而委托则可以看成是函数的抽象.一个委 ...

  2. C#多线程+委托+匿名方法+Lambda表达式

    线程 下面是百度写的: 定义英文:Thread每个正在系统上运行的程序都是一个进程.每个进程包含一到多个线程.进程也可能是整个程序或者是部分程序的动态执行.线程是一组指令的集合,或者是程序的特殊段,它 ...

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

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

  4. Lambda表达式的演化,委托-匿名方法-Func-Lambda

    匿名方法 很多时候委托接收的方法是一次性的或者方法体是非常简单的... 例三: 我们可以写成: 有没有发现我们每次都要定义委托,很多时候签名可能是一样的.这样就没有必要定义重复的. 然后又过了很久很久 ...

  5. lambda 委托 匿名方法

    委托: delegate是C#中的一种类型,它实际上是一个能够持有对某个方法的引用的类.与其它的类不同,delegate类能够拥有一个签名(signature),并且它只能持有与它的签名相匹配的方法的 ...

  6. C#委托总结-匿名方法&Lambda表达式

    1,匿名方法 匿名方法可以在声明委托变量时初始化表达式,语法如下 之前写过这么一段代码: delegate void MyDel(string value); class Program { void ...

  7. 委托delegate 泛型委托action<> 返回值泛型委托Func<> 匿名方法 lambda表达式 的理解

    1.使用简单委托 namespace 简单委托 { class Program { //委托方法签名 delegate void MyBookDel(int a); //定义委托 static MyB ...

  8. 18、(番外)匿名方法+lambda表达式

    概念了解: 1.什么是匿名委托(匿名方法的简单介绍.为什么要用匿名方法) 2.匿名方法的[拉姆达表达式]方法定义 3.匿名方法的调用(匿名方法的参数传递.使用过程中需要注意什么) 什么是匿名方法? 匿 ...

  9. c# 中的委托以及匿名方法lambda

    1.委托的定义internal delegate int MyAddFunDe(int a,int b)2.匿名方法1)MyAddFunDe fun = delegate(int a,int b){  ...

随机推荐

  1. PDF解决方案(1)--文件上传

    相关专题链接 PDF解决方案(1)--文件上传 PDF解决方案(2)--文件转PDF PDF解决方案(3)--PDF转SWF PDF解决方案(4)--在线浏览 前言:最近参与了一个项目,客户要求把系统 ...

  2. object 插入元素,插入HTML页面

    object标签用于定义一个嵌入的对象,包括:图像.音频.Java applets.ActiveX.PDF以及Flash.该标签允许您规定插入HTML文档中的对象的数据和参数,以及可用来显示和操作数据 ...

  3. 2014年3I工作室成员的正式名单

    后3I认真审议和审查工作室的老师及相关人员,今天,新成员首次正式发布,如以下:博才文(11软件).黄彩云(11软件).朱小丹(11软件).海(11软件).欧剑灵(11此计).黄思源(12软件).黄龙营 ...

  4. socket计划——一个简单的例子

    从一个简单易用TCP样品开始socket计划,的基本过程例如下列: server                                                  client +++ ...

  5. Xamarin.Android

    Xamarin.Android之使用百度地图起始篇 一.前言 如今跨平台开发层出不穷,而对于.NET而言时下最流行的当然还是Xamarin,不仅仅能够让我们在熟悉的Vs下利用C#开发,在对原生态类库的 ...

  6. asp.net请求响应模型原理随记回顾

    asp.net请求响应模型原理随记回顾: 根据一崇敬的讲师总结:(会存在些错误,大家可以做参考) 1.-当在浏览器输入url后,客户端会将请求根据http协议封装成为http请求报文.并通过主sock ...

  7. 学习Sass之安装Sass

    学习Sass之安装Sass 为什么使用Sass 作为前端(html.javascript.css)的三大马车之一的css,一直以静态语言存在,HTML5火遍大江南北了.javascript由于NODE ...

  8. 用MVC+EF快速弄出一个CRUD

    瞧一瞧,看一看呐,用MVC+EF快速弄出一个CRUD,一行代码都不用写,真的一行代码都不用写!!!! 现在要写的呢就是,用MVC和EF弄出一个CRUD四个页面和一个列表页面的一个快速DEMO,当然是在 ...

  9. C语言与linux的故事

    声明:本文是作者读完http://www.aqee.net/proof-that-linux-is-always-number-1/这篇文章后的随想. 凌晨2点,电脑前,程序员还在不断修改着自己的代码 ...

  10. url路径

      /:表示根目录(最原始开头的那个目录): ~/:表示虚拟站点根目录: ../:表示上级目录(当前目录的上一级),相当于在当前目录按了一次后退键: ../../:表示上上级目录: ./:当前目录(当 ...