什么是委托:

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

声明委托类型:

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. Oracleclient+PLSQL Developer实现远程登录Oracle数据库

    Oracle数据库功能强大.性能卓越,在造就这些长处的同一时候,也导致Oracle占内存比較多.针对这个问题,我们怎样做到取其精华去其糟粕呢? 解决方式:我们能够在局域网内的server上安装庞大的O ...

  2. Swift初探一

    今天安装了一下Xcode6-Beta版,想来体验一下Swift的魅力:安装Swift系统最低版本号为:10.9.3 仅仅看看一点The Swift Programming Language,以下给大家 ...

  3. 探秘ReSharper8.1版本中Architecture(架构工具)的改进

    在ReSharper 8.0新版本中,有一个叫做Architecture(结构工具)的新功能,此功能被定义为项目依赖关系分析.其目的是让用户可视化操作解决方案的结构.接下来,小编将在ReSharper ...

  4. Dotfuscator自定义规则中的元素选择

    Dotfuscator是专业的.NET程序代码保护软件.是支持规则自定义的,你可以对重命名.程序控制流.字符串加密等等功能自定义规则.在进行规则自定义过程中,可以通过元素的不同选择,满足自己的程序需要 ...

  5. 前台框架的选择 EasyUI、DWZ、ligerui

    EasyUI1.3.1+MVC4.0+EF5.0 番外篇 关于前台框架的选择 EasyUI.DWZ.ligerui 昨天发了EasyUI1.3.1+MVC4.0+EF5.0实战之一 开篇及布局控件介绍 ...

  6. PLSQL导入/导出数据方法

    PLSQL导入/导出数据方法 PLSQL导入/导出数据方法 以前导数据库信息的时候,总是会先开启sql窗口,把自己手写的建表文件复制进去,然后再导入数据信息. 今天突然懒得去找以前的建表文件,而想用S ...

  7. javascript 学习总结(七)String对象

    1.string对象中可以传正则的函数介绍 /* match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配. 该方法类似 indexOf() 和 lastIndexOf(),但是 ...

  8. GoogleGoogle搜索解析

    GoogleGoogle搜索解析 是一个类似Google趋势SEO 在 线keyword工具.它的正式口号提出“在搜索些什么”.利用Google搜索解析,能够比較特定区域.类别.时间范围以及搜索资源之 ...

  9. 你是否应该使用一个Javascript MVC框架?

    你是否应该使用一个Javascript MVC框架?本文摘自smashingmagazine的Journey Through The JavaScript MVC Jungle部分内容,希望对大家有帮 ...

  10. MySql 集群配置

    MYSQL CLUSTER方案介绍 本文的大致框架来自罗志威.黄川的报告, 在它的基础上进行简化和修改一些bug并且添加了主从复制的章节,最后做出该文档 MySQL Cluster 是MySQL适合于 ...