由匿名方法到Lambda表达式的演变
一.具名方法
具名方法如下Add50,实例化委托时赋值方法名称,C#中的委托像C、C++中的函数指针,保存的是方法的地址(函数指针)
public static int Add50(int x) { return x + 50; } // 自定义委托类型 // 注意是自定义类型 delegate int MyDel(int inParam); static void Main() { MyDel del = Add50; Console.WriteLine($"{del(5)}"); }
二.匿名方法
不使用独立的具名方法,是实例化委托时内联(inline)声明方法
delegate(int x)方法声明是不具名的,只在此处引用,不再复用。
// 自定义委托类型 // 注意是自定义类型 delegate int MyDel(int inParam); static void Main() { MyDel del = Add50; Console.WriteLine($"{del(5)}"); } delegate int MyDel(int inParam); static void Main() { MyDel del = delegate(int x) { return x + 50; } Console.WriteLine($"{del(5)}"); }
三.Lambda表达式
匿名方法的简要表示 ,以下示例是从匿名方法到Lambda表达式演变过程 使用预定义委托类型Action或Func,可以不用自定义委托类型了
// 自定义委托类型 // 注意是自定义类型 delegate int MyDel(int inParam); static void Main() { MyDel del0 = (int x) { return x + 50; } MyDel del1 = (int x) => { return x + 50; }; MyDel del2 = (x) => { return x + 50; }; MyDel del3 = x => { return x + 50; }; MyDel del4 = x => x + 50; // 使用预定义委托类型Action或Func // 注意是自定义类型 Func<int, int> del5 = new((x) => { return x + 50; }); Func<int, int> del6 = new(x => x + 50); Console.WriteLine($"{del1(0)}"); Console.WriteLine($"{del1(1)}"); Console.WriteLine($"{del2(2)}"); Console.WriteLine($"{del3(3)}"); Console.WriteLine($"{del4(4)}"); Console.WriteLine($"{del5(5)}"); Console.WriteLine($"{del6(6)}"); }
分类:
C#
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义