五、Lambda和Linq

1.Lambda的演变历史

public delegate void NoReturnNoPara();
public delegate void NoReturnWithPara(int x, string y);
public delegate int WithReturnNoPara();
public delegate string WithReturnWithPara(out int x, ref int y);
public void ShowLambdaHistory()
{
   
    Console.WriteLine($"在.NetFramework1.0/1.1时代");
    NoReturnNoPara method1 = new NoReturnNoPara(DoNothing);
    method1.Invoke();
    NoReturnWithPara method2 = new NoReturnWithPara(Study);
    method2.Invoke(3, "牧舟");
    Console.WriteLine();

    Console.WriteLine("在.NetFramework2.0时代 —— 匿名方法");
    Console.WriteLine("增加了一个delegate关键字,可以访问到除了参数以外的局部变量");
    string localVar = "局部变量";
    NoReturnWithPara method3 = new NoReturnWithPara(delegate (int id, string name)
    {
   
        Console.WriteLine($"参数:{
     id}{
     name}学习高级班课程,   localVar = {
     localVar}");
    });
    method3.Invoke(10, "牧舟");
    Console.WriteLine();

    Console.WriteLine("在.NetFramework3.0时代");
    Console.WriteLine("去掉了delegate关键字,添加了一个符号=>,读作“goes to”");
    NoReturnWithPara method4 = new NoReturnWithPara((int id, string name) =>
    {
   
        Console.WriteLine($"参数:{
     id}{
     name}学习高级班课程,   localVar = {
     localVar}");
    });
    method4.Invoke(11, "牧舟");
    Console.WriteLine();

    Console.WriteLine("在.NetFramework3.0时代后期");
    Console.WriteLine("去掉了匿名方法中的参数类型,编译器自动推断(语法糖)");
    NoReturnWithPara method5 = new NoReturnWithPara((id, name) =>
    {
   
        Console.WriteLine($"参数:{
     id}{
     name}学习高级班课程,   localVar = {
     localVar}");
    });
    method5.Invoke(13, "牧舟");
    Console.WriteLine();

    Console.WriteLine("如果匿名方法体中,只有一行代码,可以省略方法体的大括号");
    NoReturnWithPara method6 = new NoReturnWithPara((id, name) => 
    Console.WriteLine($"参数:{
     id}{
     name}学习高级班课程,   localVar = {
     localVar}"));
    method6.Invoke(14, "牧舟");
    Console.WriteLine("继续精进……");
    NoReturnWithPara method7 = (id, name) =>
    Console.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值