记关于 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 }

时间: 2024-08-11 01:33:04

记关于 Lambda 表达式的基础写法的相关文章

深入浅出lambda表达式--零基础一分钟入门

lambda从使用上来说,第一感觉直白的理解就是,少了很多不必要的匿名回调类的写法,比如: public static void main(String[] args) { PlatformQuery query = new PlatformQuery().createDemo(); Runnable c = () -> { System.out.println(JsonUtils.toJson(query)); }; Thread thread = new Thread(c); thread.

java8新特性之——lambda表达式的使用

lambda表达式简介 个人理解,lambda表达式就是一种新的语法,没有什么新奇的,简化了开发者的编码,其实底层还是一些常规的代码.Lambda 是一个匿名函数,我们可以把 Lambda 表达式理解为是一段可以传递的代码(将代码像数据一样进行传递).可以写出更简洁.更灵活的代码.作为一种更紧凑的代码风格,使Java的语言表达能力得到了提升. Lambda表达式的语法(记得要在jdk1.8及以上的jdk环境下实验) Lambda 表达式的基础语法:Java8中引入了一个新的操作符 "->&

lambda表达式之实践篇

之前对Lambda表达式的基础进行过总结,现在就从实践上进一步对它进行了解.看看它与委托.匿名函数的区别,以及它有什么亮点! 一.实践代码区 (一)委托 //传统的调用委托的示例 static void FindDelegate() { List<string> list = newList<string>(); list.AddRange(new string[] {"ASP.NET课程", "J2EE课程", "PHP课程&qu

委托、匿名方法、Lambda表达式的演进

假设给我们一个泛型对象List<T>,T为int类型,要求我们使用该对象方法FindAll(Predicate<T> match)从中找出该List中的偶数,您如何实现? 说明一下:Predicate<T>是一个泛型委托,它的原型为public delegate bool Predicate<T>(T obj),该委托传入一个T类型对象,经逻辑判断后返回布尔值. 委托 可能您首先想到的是用委托实现,实现方法如下: //方法1staticvoid Method

JAVA8之lambda表达式详解,及stream中的lambda使用

原文:http://blog.csdn.net/jinzhencs/article/details/50748202 lambda表达式详解 一.问题 1.什么是lambda表达式? 2.lambda表达式用来干什么的? 3.lambda表达式的优缺点? 4.lambda表达式的使用场景? 5.lambda只是一个语法糖吗? 二.概念 lambda表达式是JAVA8中提供的一种新的特性,它支持Java也能进行简单的"函数式编程". 它是一个匿名函数,Lambda表达式基于数学中的λ演算

根据表达式树动态生成Lambda表达式

1.准备 环境:Asp.Net MVC5 .EF6 前置知识:反射.使用过EF编写过Lambda表达式 2.基础类库 2.1该高级条件的类型 1 /// <summary> 2 /// 当前条件所属类型 3 /// </summary> 4 public enum Em_AS_ConditionType 5 { 6 /// <summary> 7 /// 并 8 /// </summary> 9 [Description("并")] 10

精通lambda表达式:Java多核编程pdf

下载地址:网盘下载 内容简介  · · · · · · lambda表达式权威指南 <精通lambda表达式:Java多核编程>介绍Java SE 8中与lambda相关的特性是如何帮助Java迎接下一代并行硬件架构的挑战的.本书讲解了如何编写lambda.如何在流与集合处理中使用lambda,并且提供了完整的代码示例.你将学习如何通过lambda表达式充分利用当今多核硬件所带来的性能改进. 主要内容: ● 为何需要lambda,它将如何改变Java编程 ● lambda表达式语法 ● 流与管

JDK8新特性02 Lambda表达式02_Lambda语法规则

//函数式接口:只有一个抽象方法的接口称为函数式接口. 可以使用注解 @FunctionalInterface 修饰 @FunctionalInterface public interface MyFun { public Integer getValue(Integer num); } import java.util.ArrayList; import java.util.Comparator; import java.util.HashMap; import java.util.List;

Java8新特性之一:Lambda表达式

Java8是自java5之后最重大的一次更新,它给JAVA语言带来了很多新的特性(包括编译器.类库.工具类.JVM等),其中最重要的升级是它给我们带来了Lambda表达式和Stream API. 1.什么是Lambda表达式? Lambda是一个匿名函数,可以理解为是一段可以传递的代码,可以将代码像传递参数.传递数据一样进行传输.使用Lambda表达式,可以写出更加紧凑.更加简洁.更加灵活的代码. 2.使用Lambda的限制条件 Lambda并不是任何地方都可以使用,Lambda表达式需要"函数