Lamda 的由来(委托演变)

今天遇到一个问题就是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的参数可以定义的。也可以根据上下文推断出。

 

转载于:https://www.cnblogs.com/zhbsh/archive/2011/08/12/2135662.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值