Lambda表达式的前世今生~~~~~~

it2026-08-31  1

namespace MyLamdba{ class Program { static void Main(string[] args) { LamDbaShow.Show(); Console.ReadKey(); } }}

====================================================================================================================namespace MyLamdba{ public delegate void OutNoResultNoPara();//无返回值

public delegate void OutNoResultWithPara(string name, DateTime now);// public delegate int WithResultWithPara(int x, int y); public delegate string NoParaWithResult(); public class LamDbaShow {

public static void Show() { //匿名函数,这里的省略了把方法名传过来,直接把传参的拿过来了,把方法名去掉了 OutNoResultWithPara method1 = new OutNoResultWithPara( delegate(string name, DateTime now) { Console.WriteLine("我是{0},现在{1}点了", name, now); } ); method1.Invoke("aaaa", DateTime.Now); //====================^=^^=^^=^^=^我是漂亮的分割线……^=^^=^^=^^=^=============================================

OutNoResultWithPara method2 = new OutNoResultWithPara( (string name, DateTime now) =>//把delegate 关键字换成了=> 箭头的左边是参数列表,右边是方法体 { Console.WriteLine("我是{0},现在{1}点了", name, now); } ); method2.Invoke("aaaa", DateTime.Now); //lamdba表达式其实就是一个匿名方法 //====================^=^^=^^=^^=^我是漂亮的分割线……^=^^=^^=^^=^=============================================

OutNoResultWithPara method3 = new OutNoResultWithPara( (name, now) =>//把delegate 关键字换成了=> 箭头的左边是参数列表,右边是方法体 { Console.WriteLine("我是{0},现在{1}点了", name, now); } );//去掉了参数类型,因为在进行委托的时候,约束了传入参数的类型 method3.Invoke("aaaa", DateTime.Now); //====================^=^^=^^=^^=^我是漂亮的分割线……^=^^=^^=^^=^=============================================

OutNoResultWithPara method4 = ((name, now) => { Console.WriteLine("我是{0},现在{1}点了", name, now); } );//去掉了实例化委托,直接传参 method3.Invoke("aaaa", DateTime.Now); //====================^=^^=^^=^^=^我是漂亮的分割线……^=^^=^^=^^=^============================================= OutNoResultWithPara method = (s, d) => Console.WriteLine("我是{0},现在{1}点了", s, d); //去掉了大括号,前提是方法体只有一行 method.Invoke("猪猪猪", DateTime.Now); //====================^=^^=^^=^^=^我是漂亮的分割线……^=^^=^^=^^=^============================================= OutNoResultNoPara met = () => Console.WriteLine("132123");//不传入参数的 met.Invoke(); //====================^=^^=^^=^^=^我是漂亮的分割线……^=^^=^^=^^=^============================================= WithResultWithPara WW = (x, y) => { return x + y; }; Console.WriteLine(WW.Invoke(1, 2)); WithResultWithPara WS = (x, y) => x + y; Console.WriteLine(WS.Invoke(1, 2));//去掉了大括号,带返回值的直接去掉return 前提是方法体只有一行, //====================^=^^=^^=^^=^我是漂亮的分割线……^=^^=^^=^^=^=============================================

OutNoResultNoPara sss = () => { };//无参数无返回值,啥都没干

NoParaWithResult aa = () => "我是无参数有返回值"; Console.WriteLine(aa()); }

public static void Study(string name, DateTime now) { Console.WriteLine("我是{0},现在{1}点了", name, now); }

}}

转载于:https://www.cnblogs.com/ZkbFighting/p/7638139.html

相关资源:数据结构—成绩单生成器
最新回复(0)