记关于 Lambda 表达式的基础写法
2016-07-23 01:24
274 查看
namespace MyLambda { 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); 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); public delegate void NoReturnNoParaOut(); public class LambdaShow { public static void Show() { { NoReturnWithPara method = new NoReturnWithPara(ShowStudent);//2 实例化委托 要求传递的方法必须和委托约束的签名一致 method.Invoke(196, "Emrys");//3 调用委托 } { NoReturnWithPara method = ShowStudent;//实例化委托的时候,可以去掉 new NoReturnWithPara method.Invoke(196, "Emrys"); } { NoReturnWithPara method = delegate(int id, string name)//匿名方法 { Console.WriteLine("id={0} name={1}正在高级班学习....", id, name); }; method.Invoke(196, "Emrys"); } { NoReturnWithPara method = (int id, string name) =>//lambda表达式 本质是一个匿名函数,是一个函数 { Console.WriteLine("id={0} name={1}正在高级班学习....", id, name); }; method.Invoke(196, "Emrys"); } { NoReturnWithPara method = (id, name) =>//实例化委托 要求传递的方法必须和委托约束的签名一致 编译器会自动推断 { Console.WriteLine("id={0} name={1}正在高级班学习....", id, name); }; method.Invoke(196, "Emrys"); } { //如果方法体只有一行,可以去掉大括号 NoReturnWithPara method = (id, name) => Console.WriteLine("id={0} name={1}正在高级班学习....", id, name); method.Invoke(196, "Emrys"); } { NoReturnNoPara method = () => { }; NoReturnWithOnePara method1 = i => Console.WriteLine(i); method1.Invoke(13); } { WithReturnWithPara method = (m, n) => { return DateTime.Now.Second; }; Console.WriteLine("当前时间的second={0}", method.Invoke(3, 4)); } { WithReturnWithPara method = (m, n) => DateTime.Now.Second; Console.WriteLine("当前时间的second={0}", method.Invoke(3, 4)); } { //0 到16个参数 无返回值 的泛型委托 Action method = () => { }; Action<int> act1 = i => Console.WriteLine(i); Action<string> act2 = i => Console.WriteLine(i); Action<string, long, DateTime, string, int, decimal, byte, LambdaShow, long, DateTime, string, int, decimal, byte, LambdaShow, Program> act1111 = null; Action<string, string, long, DateTime, string, int, decimal, byte, LambdaShow, long, DateTime, string, int, decimal, byte, LambdaShow, Program> act11111 = null; } { //0 到16个参数 带返回值 的泛型委托 Func<string> func1 = () => "Menzer"; Console.WriteLine(func1.Invoke()); Func<string, string, long, DateTime, string, int, decimal, byte, LambdaShow, long, DateTime, string, int, decimal, byte, LambdaShow, Program> func1111 = null; Func<string, string, string, long, DateTime, string, int, decimal, byte, LambdaShow, long, DateTime, string, int, decimal, byte, LambdaShow, Program> func11112 = null; } } public delegate void NoReturnNoPara();//1 声明委托 public delegate void NoReturnWithOnePara(int id); public delegate void NoReturnWithOnePara1(string id); public delegate void NoReturnWithOnePara2(long id); public delegate void NoReturnWithOnePara3(DateTime id); public delegate void NoReturnWithPara(int id, string name); public delegate int WithReturnNoPara(); public delegate int WithReturnWithPara(int x, int y); private static void ShowStudent(int id, string name) { Console.WriteLine("id={0} name={1}正在高级班学习....", id, name); } private static void ShowStudent1(int id, string name) { Console.WriteLine("id={0} name={1}正在高级班学习....", id, name); } private static void ShowStudent2(int id, string name) { Console.WriteLine("id={0} name={1}正在高级班学习....", id, name); } private static void ShowStudent3(int id, string name) { Console.WriteLine("id={0} name={1}正在高级班学习....", id, name); } } }
View Code
相关文章推荐
- Web---文件上传-用apache的工具处理、打散目录、简单文件上传进度
- 函数重载例子
- Web---文件上传-用apache的工具处理、打散目录、简单文件上传进度
- E - Lazy Math Instructor
- Timer控件
- Android TextView中标点符号或英文导致自动换行问题
- Nginx HTTP负载均衡示例
- 系统的x86与x64是什么意思以及他们的区别?
- 插件框架篇一之jar和apk打包
- F - Buggy Sat
- Android中设置部分字体的颜色改变,并且能点击
- javaScript NaN用法
- php类模块引擎PDO操作MySQL数据库简单阐述
- android 仪表盘控件
- C. NP-Hard Problem
- vsftp详细配置——/etc/vsftpd/vsftpd.conf
- JavaWeb基础知识:Html与Css基础入门
- 作用域运算符的使用
- 插件框架篇一之问题解决汇总
- 关于一些定时任务的简单描述