zoukankan      html  css  js  c++  java
  • 记关于 Lambda 表达式的基础写法

      1 namespace MyLambda
      2 {
      3     public delegate void Action<in T1, in T2, in T3, in T4, in T5, in T6, in T7, in T8, in T9, in T10, in T11, in T12, in T13, in T14, in T15, in T16, in T17>(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17);
      4     public delegate TResult Func<in T1, in T2, in T3, in T4, in T5, in T6, in T7, in T8, in T9, in T10, in T11, in T12, in T13, in T14, in T15, in T16, in T17, out TResult>(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8, T9 arg9, T10 arg10, T11 arg11, T12 arg12, T13 arg13, T14 arg14, T15 arg15, T16 arg16, T17 arg17);
      5     public delegate void NoReturnNoParaOut();
      6 
      7     public class LambdaShow
      8     {
      9 
     10         public static void Show()
     11         {
     12             {
     13                 NoReturnWithPara method = new NoReturnWithPara(ShowStudent);//2 实例化委托 要求传递的方法必须和委托约束的签名一致
     14                 method.Invoke(196, "Emrys");//3 调用委托
     15             }
     16 
     17             {
     18                 NoReturnWithPara method = ShowStudent;//实例化委托的时候,可以去掉 new NoReturnWithPara
     19                 method.Invoke(196, "Emrys");
     20             }
     21 
     22             {
     23                 NoReturnWithPara method = delegate(int id, string name)//匿名方法
     24                 {
     25                     Console.WriteLine("id={0} name={1}正在高级班学习....", id, name);
     26                 };
     27                 method.Invoke(196, "Emrys");
     28             }
     29 
     30             {
     31                 NoReturnWithPara method = (int id, string name) =>//lambda表达式  本质是一个匿名函数,是一个函数
     32                 {
     33                     Console.WriteLine("id={0} name={1}正在高级班学习....", id, name);
     34                 };
     35                 method.Invoke(196, "Emrys");
     36             }
     37 
     38             {
     39                 NoReturnWithPara method = (id, name) =>//实例化委托 要求传递的方法必须和委托约束的签名一致   编译器会自动推断
     40                 {
     41                     Console.WriteLine("id={0} name={1}正在高级班学习....", id, name);
     42                 };
     43                 method.Invoke(196, "Emrys");
     44             }
     45 
     46             {
     47                 //如果方法体只有一行,可以去掉大括号
     48                 NoReturnWithPara method = (id, name) => Console.WriteLine("id={0} name={1}正在高级班学习....", id, name);
     49                 method.Invoke(196, "Emrys");
     50             }
     51 
     52             {
     53                 NoReturnNoPara method = () => { };
     54                 NoReturnWithOnePara method1 = i => Console.WriteLine(i);
     55                 method1.Invoke(13);
     56 
     57             }
     58             {
     59                 WithReturnWithPara method = (m, n) => { return DateTime.Now.Second; };
     60                 Console.WriteLine("当前时间的second={0}", method.Invoke(3, 4));
     61             }
     62             {
     63                 WithReturnWithPara method = (m, n) => DateTime.Now.Second;
     64                 Console.WriteLine("当前时间的second={0}", method.Invoke(3, 4));
     65             }
     66 
     67 
     68             {
     69                 //0 到16个参数  无返回值 的泛型委托
     70                 Action method = () => { };
     71                 Action<int> act1 = i => Console.WriteLine(i);
     72                 Action<string> act2 = i => Console.WriteLine(i);
     73                 Action<string, long, DateTime, string, int, decimal, byte, LambdaShow, long, DateTime, string, int, decimal, byte, LambdaShow, Program> act1111 = null;
     74                 Action<string, string, long, DateTime, string, int, decimal, byte, LambdaShow, long, DateTime, string, int, decimal, byte, LambdaShow, Program> act11111 = null;
     75             }
     76             {
     77                 //0 到16个参数  带返回值 的泛型委托
     78                 Func<string> func1 = () => "‭‭‭‭‭‭‭‭Menzer";
     79                 Console.WriteLine(func1.Invoke());
     80                 Func<string, string, long, DateTime, string, int, decimal, byte, LambdaShow, long, DateTime, string, int, decimal, byte, LambdaShow, Program> func1111 = null;
     81                 Func<string, string, string, long, DateTime, string, int, decimal, byte, LambdaShow, long, DateTime, string, int, decimal, byte, LambdaShow, Program> func11112 = null;
     82             }
     83 
     84 
     85 
     86 
     87         }
     88 
     89         public delegate void NoReturnNoPara();//1 声明委托
     90         public delegate void NoReturnWithOnePara(int id);
     91         public delegate void NoReturnWithOnePara1(string id);
     92         public delegate void NoReturnWithOnePara2(long id);
     93         public delegate void NoReturnWithOnePara3(DateTime id);
     94         public delegate void NoReturnWithPara(int id, string name);
     95         public delegate int WithReturnNoPara();
     96         public delegate int WithReturnWithPara(int x, int y);
     97 
     98 
     99 
    100 
    101         private static void ShowStudent(int id, string name)
    102         {
    103             Console.WriteLine("id={0} name={1}正在高级班学习....", id, name);
    104         }
    105         private static void ShowStudent1(int id, string name)
    106         {
    107             Console.WriteLine("id={0} name={1}正在高级班学习....", id, name);
    108         }
    109         private static void ShowStudent2(int id, string name)
    110         {
    111             Console.WriteLine("id={0} name={1}正在高级班学习....", id, name);
    112         }
    113         private static void ShowStudent3(int id, string name)
    114         {
    115             Console.WriteLine("id={0} name={1}正在高级班学习....", id, name);
    116         }
    117     }
    118 }
    View Code
  • 相关阅读:
    datatime模块
    快速幂
    | 与|| ,& 与&&
    sql----order by
    pandas iterrows()
    黄包车比赛 python学习
    右键git-bash不能使用
    17flask分页
    16flask错误处理
    15跨站请求伪造
  • 原文地址:https://www.cnblogs.com/cinlap/p/5697714.html
Copyright © 2011-2022 走看看