当前位置: 首页 > news >正文

02011402 委托02-匿名方法、Lambda表达式

02011402 委托02-匿名方法、Lambda表达式

1. 匿名方法

  • 至此,我们已经介绍了使用静态方法或实例方法来实例化委托。在这种情况下,方法本身都可以被代码的其它部分显式调用。
  • 如果方法只会使用一次,在这种情况下,除了创建委托的语法需要,没有必要创建独立的具名方法。
  • 匿名方法是在实例化委托时内联声明的方法。
1.1 比较具名方法和匿名方法
// @1使用具名方法来实例化委托
using System; namespace Demo01
{delegate int MyDel(int x);class MyClass{public static int Add1(int x){return x += 2;}static void Main(){MyDel mDel1 = Add1; // 通过具名方法来实例化委托Console.WriteLine($"Value:{mDel1(10)}");Console.ReadLine();}}
}控制台输出:
Value:12
—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—
// @2 使用匿名方法来实例化委托
using System; namespace Demo01
{delegate int MyDel(int x);class MyClass{static void Main(){MyDel mDel1 = delegate (int x) // 通过匿名方法来实例化委托{return x += 2;};Console.WriteLine($"Value:{mDel1(10)}");Console.ReadLine();}}
}控制台输出:
Value:12
1.2 使用匿名方法
  • 可以在如下地方使用匿名方法。
    • 声明委托变量时作为初始化表达式。
    • 组合委托时在赋值语句的右边。
    • 为委托增加事件时在赋值语句的右边。(后续章节会讲解)
1.3 匿名方法的语法
delegate(Parameter){ImplementationCode} // 匿名方法表达式↑          ↑              ↑
关键字     参数列表         语句块说明:
1. 匿名方法表达式要有delegate类型关键字。
2. 匿名方法表达式要有参数列表,如果语句块没有任何参数则可以省略。
3. 语句块,它包含了匿名方法的代码。
1.4 匿名方法的返回类型
  • 匿名方法不会显式声明返回值。然而,实现代码本身的行为必须通过返回一个与委托的返回值类型相同的值来匹配委托的返回值。
delegate int MyDel(int myInt)static void Main()
{MyDel mDel = delegate(int x) // 匿名方法不会显式的声明返回值{retuan x + 20; // 返回一个整型值}
}说明:如上代码中,委托的返回类型是int,因此匿名方法的实现代码也必须在代码路径中返回int。
1.5 匿名方法的参数
  • 除了参数数组,匿名方法的参数列表必须在如下3方面与委托匹配。
    • 参数数量。
    • 参数类型及其位置。
    • 修饰符。
  • 可以通过()为空或省略圆括号来简化匿名方法的参数列表,但必须满足如下两个条件。
    • 委托的参数列表不包括任何out参数。
    • 匿名方法不适用任何参数。
delegate void MyDel(int x); // 委托参数列表没有out参数
MyDel mDel = delegate // 没有参数列表
{PrintMessage(); // 方法体中没有使用任何参数
}

2. Params参数

结尾

书籍:C#图解教程

著:【美】丹尼尔 · 索利斯;卡尔 · 施罗坦博尔

译:窦衍森;姚琪琳

ISBN:978-7-115-51918-4

版次:第5版

发行:人民邮电出版社

※敬请购买正版书籍,侵删请联系85863947@qq.com※

※本文章为看书或查阅资料而总结的笔记,仅供参考,如有错误请留言指正,谢谢!※

http://www.sczhlp.com/news/11472/

相关文章:

  • 基础数论公式集合
  • day23
  • 【办公自动化】如何使用Python操作PPT和自动化生成PPT?
  • 使用IOptions方式获取配置选项
  • 关于几种进阶搜索算法
  • 数据中心“拥抱”ARM架构,为何如此艰难?
  • ZROI 集训模拟赛后感
  • VLA完成度较低,加入世界模型或能收窄不确定性
  • 一文搞懂多模态大模型:视觉-语言模型(VLM)
  • 20250813(补档)
  • 8月集训记
  • 中国高校的AI大神教授盘点
  • VS Code 中把「自己部署的 Coder 模型」变成 AI 编程助手
  • 美版宇树|全球最灵敏人形机器人叠衣服,不只是机械臂!力证VLA模型?
  • AI自我提升的五种技术路径
  • C#记录类型与集合的深度解析:从默认行为到自定义比较
  • 【指南】同时安装vllm与flashinfer
  • 记一次展讯CPU安卓手机刷成砖后的救砖记录
  • Java集合——11.使用PriorityQueue
  • 基础算法
  • C++小白修仙记_快速排序
  • Java集合——10.使用Queue
  • 树链剖分详解(长链剖分)
  • 圆锥曲线二级结论
  • 新版EIDE创建C51_with_keil5模板方法
  • 【日记】2025-8-13
  • 谷歌账号停用申诉 google账户被封如何解封 如何填写申诉理由和找回账号
  • CompletableFuture
  • 大東聰明家App技术支持
  • 【碎碎念】无题