博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c#-委托,匿名方法,lambda表达的关系
阅读量:4567 次
发布时间:2019-06-08

本文共 2840 字,大约阅读时间需要 9 分钟。

什么是委托:

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

声明委托类型:

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表达式(方法)

控制台

1  class Program 2     { 3         static void Main(string[] args) 4         { 5             Console.WriteLine("传统委托代码示例:"); 6             FindListDelegate(); 7             Console.Write("\n"); 8  9             Console.WriteLine("使用匿名方法的示例:");10             FindListAnonymousMethod();11             Console.Write("\n");12 13             Console.WriteLine("使用Lambda的示例");14             FindListLambdaExpression();15 16             Console.Read();17 18     19 20         }21         //传统的调用委托的实例22         static void FindListDelegate()23         {24             //创建泛型list类25             List
list = new List
();26 27 list.AddRange(new string[] { "asp.net课程","Java课程","123" });28 Predicate
findPredicate = new Predicate
(IsBookCategory);29 List
bookCategory = list.FindAll(findPredicate);30 31 foreach (string str in bookCategory)32 {33 Console.WriteLine("{0}\t", str);34 }35 }36 //谓词方法,传递给FindALl进行书籍分类判断37 static bool IsBookCategory(string str)38 {39 return str.EndsWith("课程") ? true : false;40 }41 42 //使用匿名方法来进行搜索过程43 44 static void FindListAnonymousMethod()45 {46 //先创建泛型list类47 List
list = new List
();48 list.AddRange(new string[] { "asp.net课程", "MVC课程,123" });49 50 //在这里,使用匿名方法直接为委托创建一个代码块,而不用去创建单独的方法51 52 List
bookCategory = list.FindAll(delegate(string str)53 {54 return str.EndsWith("课程") ? true : false;55 }56 );57 foreach (string str in bookCategory)58 {59 Console.WriteLine("{0}\t", str);60 }61 }62 //使用lambda来实现搜索过程63 static void FindListLambdaExpression()64 {65 66 //先创建一个泛型的list类67 List
list = new List
();68 list.AddRange(new string[] { "asp.net课程", "MVC课程","123" });69 //在这里使用lambda来创建一个委托方法70 71 List
bookCategory = list.FindAll((string str) => str.EndsWith("课程"));72 73 foreach (string str in bookCategory)74 {75 Console.WriteLine("{0}\t", str);76 }77 }78 79 }
委托,匿名方法,lambda表达式

 

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

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

 

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

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

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

 

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

 

2017-2-22补充

 

 

 

 

转载于:https://www.cnblogs.com/LZXX/p/6285842.html

你可能感兴趣的文章
mysql数据库2-常用命令
查看>>
安卓开发环境搭建(转)
查看>>
Harris角点检测
查看>>
Struts2的处理流程及为Action的属性注入值
查看>>
设计中最常用的CSS选择器
查看>>
Maven项目打包成可执行Jar文件
查看>>
nginx http proxy 正向代理
查看>>
对BFC的总结
查看>>
23醒
查看>>
win7每天出现taskeng.exe进程的解决方案
查看>>
React Children
查看>>
大数据等最核心的关键技术:32个算法
查看>>
Maven多模块项目搭建
查看>>
redis列表list
查看>>
雷林鹏分享: C# 简介
查看>>
实用类-<Math类常用>
查看>>
构建之法阅读笔记之四
查看>>
10.15习题2
查看>>
Windows Server 2008 R2 备份与恢复详细实例
查看>>
Ubuntu上kubeadm安装Kubernetes集群
查看>>