zoukankan      html  css  js  c++  java
  • C#委托 Lamda表达式

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Threading.Tasks;
     6 
     7 namespace ConsoleApplication1
     8 {
     9     delegate void DelegateGreet(string name);  //声明委托类型
    10     class Lamda
    11     {
    12         public static void EnglishGreet(string name)
    13         {
    14             Console.WriteLine("GoodMorning!" + name);
    15         }
    16 
    17         static void Main(string[] args)
    18         {
    19             DelegateGreet dele1 = Lamda.EnglishGreet;   //创建委托变量 并对其进行赋值
    20             dele1("jack");    //调用委托方法
    21 
    22             /*.net2.0提出的匿名方法对委托进行简化   
    23              这种方式和上面的方法的最大区别就是不用去再去创建委托变量 赋值
    24              匿名方法就不需要写上面的东西
    25              */
    26             DelegateGreet dele2 = delegate(string name)
    27             {
    28                 Console.WriteLine("GoodMorning!" + name);
    29             };
    30             dele2("jack");
    31 
    32             /*.net3.5提出的Lamda表达式对委托方法再次简化
    33                Lamda 表达式 就是匿名方法 只是语法不同
    34              * 
    35              * (param) =>expr  param是输入参数列表 expr是一个表达式或者一系列语法
    36              
    37             */
    38             DelegateGreet dele3 = (name1) => { Console.WriteLine("GoodMorning!" + name1); }; //圆括号里 如果是一个参数,可以省略括号,参数类型可写可不写
    39             dele3("jack");
    40             /*
    41              * 声明一个委托类型时候,无非就是返回值类型和参数类型不同
    42              * 在.net3.5 中提供了两个专门简化委托的泛型方法 
    43              * Action没有参数,Action<>有参数  都不具有返回值
    44              * Func,Func<>
    45              * 其实上面两种那个泛型 的委托都是 系统已经给你定义好了 你直接用而已
    46              * 用以再次简化委托
    47              * 其实
    48              */
    49             //Action<>可以加载至多16个参数,然后这样做的好处就是自己不用事先去声明委托变量,很灵活方便
    50             Action<string,int > dele4 = (name1,name2) => { Console.WriteLine("GoodMorning!" + name1+"你今年"+name2+"岁了"); };
    51             dele4("jack",15);
    52           
    53             //Func实例  没有参数 只有返回值
    54             Func<string> dele5 = () => { return "没有参数只有返回值"; };// 因为只有返回值  可以把大括号去掉
    55             Console.WriteLine(dele5());
    56 
    57 
    58 
    59             Console.Read();
    60         }
    61     }
    62 }

    输出:

    GoodMorning!jack
    GoodMorning!jack
    GoodMorning!jack
    GoodMorning!jack你今年15岁了
    没有参数只有返回值

  • 相关阅读:
    Peewee中join三张及以上的表时只能获取一张表的数据
    Ubuntu18.04安装 NVIDIA显卡驱动+CUDA+cuDNN+Pytorch
    Kubernetes Deployment 并行重启Pod
    git config 配置用户名、邮箱
    Python __str__() 方法
    阅读-自律100天-SMART法则
    Jenkins 调用执行jmeter脚本,并直接生成html报告
    推荐一款开源的Diffy自动化测试框架(转)
    mysql binlog日志自动清理及手动删除
    大数据测试
  • 原文地址:https://www.cnblogs.com/KingsWang/p/3336795.html
Copyright © 2011-2022 走看看