匿名方法与Lambda表达式+泛型委托

news2024/10/3 11:07:37
匿名方法

和委托搭配使用,方便我们快速对委托进行传参,不需要我们定义一个新的函数,直接用delegate关键字代替方法名,后面跟上参数列表与方法体。

格式:delegate(参数列表){方法体}

lambda表达式

是匿名方法的升级,较匿名方法更加简写,当你的方法体只有一句语句的时候,可以不写return,甚至可以没有花括号,参数列表的参数甚至可以不写数据类型,但如果说方法体里一旦出现了return,一定要加上花括号。

格式:例如:Sort(list,(a,b)=>a<b);(在委托声明完整的排序方法下,实现的降序排列)

(lambda表达式不建议使用,实际开发中可能会影响代码的可读性)

泛型委托

C#提供好了两个泛型委托的模板供我们使用,这两个模板基本上可以适用于所有的委托。所以其实不需要我们自定义。

1.不带返回类型的泛型委托——Action<类型1,类型2,...,类型n>参数列表是对应的参数类型。

2.带返回类型的泛型委托——Func<类型1,类型2,...,类型n>

参数列表的末尾的类型是作为返回类型使用

自定义泛型委托

格式:delegate T 委托名<T>(T参数);

使用第一条的示例
using System;

namespace 事件
{
    class Program
    {
        static void Main(string[] args)
        {
            Test(100, ActionEvent);
        }
        public static void ActionEvent(int a)
        {
            Console.WriteLine(a);
        }
        public static void Test(int num,Action<int> del)
        {
            del(num);
        }
    }
    
}

其运行结果如下所示:

该系列专栏为网课课程笔记,仅用于学习参考。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2186084.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Brave编译指南2024 MacOS篇-环境配置(四)

引言 在上一篇文章中&#xff0c;我们成功获取了Brave浏览器的源代码。现在&#xff0c;我们将进入编译过程的关键阶段&#xff1a;环境配置。正确的环境配置对于成功编译Brave浏览器至关重要&#xff0c;它能确保所有必要的工具和依赖项都已就位&#xff0c;并且版本兼容。 …

JAVAIDEA初始工程的创建

四结构 建工程综述* 初始*&#xff1a; 1、先建个空项目&#xff0c; 2、打开文件中的项目结构新建module模块&#xff08;模块下有src&#xff09; 修改模块名&#xff1a; 也是Refactor&#xff0c;Rename&#xff0c;但是要选第三个同时改模块和文件夹名字 导入模块&am…

【Python】ftfy 使用指南:修复 Unicode 编码问题

ftfy&#xff08;fixes text for you&#xff09;是一个专为修复各种文本编码错误而设计的 Python 工具。它的主要目标是将损坏的 Unicode 文本恢复为正确的 Unicode 格式。ftfy 并非用于处理非 Unicode 编码&#xff0c;而是旨在修复因为编码不一致、解码错误或混合编码导致的…

【Python】path:简化文件路径处理的 Python 库

path 是一个 Python 库&#xff0c;提供了对文件系统路径的简洁抽象&#xff0c;使文件和目录操作更加直观和 Pythonic。该库建立在 pathlib 的基础上&#xff0c;扩展了文件路径处理的功能&#xff0c;使得开发者能够更高效地进行文件操作&#xff0c;如文件读写、目录遍历、路…

Redis缓存穿透雪崩击穿及解决

封装缓存空对象解决缓存穿透与逻辑过期解决缓存击穿工具类 Slf4j Component public class CacheClient {private final StringRedisTemplate stringRedisTemplate;public CacheClient(StringRedisTemplate stringRedisTemplate) {this.stringRedisTemplate stringRedisTemplat…

《Linux从小白到高手》理论篇(十一):Linux的系统环境管理

值此国庆佳节&#xff0c;深宅家中&#xff0c;闲来无事&#xff0c;就多写几篇博文。本篇详细深入介绍Linux的系统环境管理。 环境变量 linux系统下&#xff0c;如果你下载并安装了应用程序&#xff0c;很有可能在键入它的名称时出现“command not found”的提示内容。如果每…

震撼!AI造声新标杆,20字生成完美音频

震撼&#xff01;AI造声新标杆&#xff0c;20字生成完美音频 EzAudio是一款革命性的文本到音频生成AI&#x1f3b6;&#xff0c;快速生成高质量音频&#xff0c;告别机械音&#x1f50a;。它能将文字瞬间变成音乐和配音&#xff0c;为创作增添无限可能✨&#xff01;快来体验这…

源2.0全面适配百度PaddleNLP,大模型开发开箱即用

近日&#xff0c;源2.0开源大模型与百度PaddleNLP完成全面适配。用户通过PaddleNLP&#xff0c;可快速调用源2.0预训练大模型&#xff0c;使用源2.0在语义、数学、推理、代码、知识等方面的推理能力&#xff0c;也可以使用特定领域的数据集对源2.0 进行微调&#xff0c;训练出适…

C++11_lambda

lambda表达式 在C98中&#xff0c;如果想要对一个数据集合中的元素进行排序&#xff0c;可以使用std::sort方法。比如说&#xff0c;我想在某宝买一件商品&#xff0c;我想买该商品价格最便宜的哪一个&#xff0c;这就需要对价格排升序&#xff1b;我如果想买性价比最高的&…

AAC-Fe³⁺水凝胶,兼具拉伸性与导电性,还有自修复和4D打印能力

大家好&#xff01;今天我们来了解一种用于可拉伸电子产品的创新材料——自修复和4D打印水凝胶——《Self‐Healable and 4D Printable Hydrogel for Stretchable Electronics》发表于《Advanced Science》。在科技发展中&#xff0c;可拉伸电子产品需求大增&#xff0c;但现有…

我尝试了LangGraph Studio的AI Agent功能

构建一个真正“智能”的Agent——一个能够理解语言、做出决策并进行有意义互动的Agent——并不像编写几行代码那么简单。 它需要对AI原理和软件工程有深刻的理解。 此外&#xff0c;传统的软件工具并不适合Agent的开发&#xff0c;无法满足其独特需求。 这也是像LangGraph S…

【数据分享】2001-2023年我国省市县镇四级的逐月平均气温数据(免费获取/Shp/Excel格式)

之前我们分享过1901-2023年1km分辨率逐月平均气温栅格数据&#xff0c;该数据来源于国家青藏高原科学数据中心。为方便大家使用&#xff0c;我们还基于上述平均气温栅格数据将数据处理为Shp和Excel格式的省市县三级逐月平均气温数据&#xff08;可查看之前的文章获悉详情&#…

10.2今日错题解析(软考)

目录 前言面向对象技术——设计模式的应用场景系统开发基础——概要设计与详细设计 前言 这是用来记录我备考软考设计师的错题的&#xff0c;今天知识点为设计模式的应用场景、概要设计与详细设计&#xff0c;大部分错题摘自希赛中的题目&#xff0c;但相关解析是原创&#xf…

银河麒麟V10如何配置外网yum源?

银河麒麟V10如何配置外网yum源&#xff1f; 一、常用的软件源地址二、配置yum源的步骤1. 打开终端2. 进入yum配置文件目录3. 编辑或创建.repo文件4. 配置软件源信息5. 保存并退出6. 更新软件包列表7. 验证软件源 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不…

三色标记算法

三色标记算法 GC---> 标记&#xff08;可达性算法&#xff09;---> 根据不同算法去处理回收 STW&#xff1a;GC时对程序暂停处理下垃圾。不暂停&#xff0c;就会一直制造垃圾&#xff0c;清理不干净。暂停就会阻塞期间请求&#xff0c;影响系统性能 三色标记&#xff…

媒介坊:软文自助发布平台,开启营销新篇章

在数字化时代&#xff0c;企业营销的方式日新月异&#xff0c;软文作为一种高效、低成本的营销手段&#xff0c;越来越受到企业的青睐。然而&#xff0c;如何在众多媒体中精准投放软文&#xff0c;实现品牌的有效传播&#xff0c;成为了众多企业关注的焦点。媒介坊软文自助发布…

闯关训练三:Git 基础知识

任务1: 破冰活动&#xff1a;自我介绍 点击Fork目标项目&#xff0c;创建一个新的Fork 获取仓库链接 在连接好开发机的vscode终端中逐行执行以下代码&#xff1a; git clone https://github.com/KelvinIII/Tutorial.git # 修改为自己frok的仓库 cd Tutorial/ git branch -a g…

在腾讯云上使用docker

第一次使用腾讯云&#xff0c;记录一下过程 因为我平时需求量不大&#xff0c;所以选择的是按需购买 腾讯云服务器购买链接 按照提示一步步往下走&#xff0c;创建实例 如果你不记得密码&#xff0c;那么在下面这幅图中可以重置(选择在线重置&#xff0c;对实例没影响) 因为…

C++——模拟实现vector

1.查看vector的源代码 2.模拟实现迭代器 #pragma oncenamespace jxy {//模板尽量不要分离编译template <class T>class vector{public:typedef T* iterator;//typedef会受到访问限定符的限制typedef const T* const_iterator;//const迭代器是指向的对象不能修改&#xf…

UE5学习笔记23-给角色添加血量,添加收到伤害的功能

零、一些游戏框架知识 1.UE5中包含游戏模式类(Game Mode)、游戏状态类(Game State)、玩家状态类(Player State)、玩家控制器类(Player Controller)、所有的可以被控制的实体或角色类(Pawn)、窗口类(HUD/Widget) Game Mode&#xff1a;存在在服务器上&#xff0c;当我们在客户端…