爱学习的站长www.mmic.net.cn

www.mmic.net.cn 欢迎学习共同成长
公告信息
www.mmic.net.cn 欢迎学习共同成长
文章分类
文章档案
文章
Lamda 的由来(委托演变) 代码
2011/8/11 23:24:24

今天遇到一个问题就是lamda是怎么演变的。反正在印象中是有委托发展过来的。但那朋友貌似不太明白。让弄个demo看看。反正闲着就随便写了个。。

首先建个delegate委托

  public delegate string DelegateTran(string s);

 然后建个实现该委托的方法返回类型为string 参数也为string

  public string ToPascal(string s)
        {
            return s.Substring(0, 1).ToUpper() + s.Substring(1).ToLower();
        }

然后就一步一步来演练lamda是如何发展过来的。

在1.1的语法中,

 

//1.1委托

            DelegateTran dtran = new DelegateTran(ToPascal);
            Console.WriteLine(dtran("asfsdfsdfsdfABC"));

 

在2.0框架中进行改进了。既然那个委托名就是累赘。随便叫啥都可以。省去了。

   DelegateTran dtran2 = delegate(string s) { return s.Substring(0, 1).ToUpper() + s.Substring(1).ToLower(); };
            Console.WriteLine(dtran2("asfsdfsdfsdfABC"));
     delegate后面的()代表的是参数{}中的是实现方法。

在3.5框架中感觉2。0基础上还能省点索性delegate去了就变成

 DelegateTran dtran3 = (string s) => (s.Substring(0, 1).ToUpper() + s.Substring(1).ToLower());
            Console.WriteLine(dtran3("asfsdfsdfsdfABC"));
    其中 (string s) => (s.Substring(0, 1).ToUpper() + s.Substring(1).ToLower());
就跟lamda相似了哦。

但和lamda也是有区别的。lamda的参数可以定义的。也可以根据上下文推断出。http://pdflist.mmic.net.cn

新浪微博粉丝精灵,刷粉丝、刷评论、刷转发、企业商家微博营销必备工具"
 技术   浏览(2388)   评论(0)   关键字
  
Copyright © 2010-2020 power by CYQ.Blog - 秋色园 v2.0 All Rights Reserved