C#委托(delegate)的常用方式
C# 中委托的常用方式,包括委托的定义、实例化、不同的赋值方式以及匿名委托的使用。
委托的定义
// 委托的核心是跟委托的函数结构一样
public delegate string SayHello(string c);
public delegate string SayHello(string c);:定义了一个公共委托类型SayHello,该委托接受一个string类型的参数c,并返回一个string类型的值。
Main 方法
static void Main(string[] args)
{// 本质上其实就是把方法当作委托的参数SayHello sayC = new SayHello(SayChinese);Console.WriteLine(sayC("欢迎大家"));SayHello sayE = new SayHello(SayEgnlish);Console.WriteLine(sayE("Welcome to"));// 简单的写法:必须类型一样SayHello s1 = SayChinese;SayHello s2 = SayEgnlish;Console.WriteLine(s1("好好好"));Console.WriteLine(s2("Gooood"));// 最推荐SayHello ss1 = con => con;Console.WriteLine(ss1("niiiice"));// 匿名委托:一次性委托SayHello ss3 = delegate(string s) { return s; };Console.WriteLine(ss3("说中国话"));
}
- 常规实例化委托
SayHello sayC = new SayHello(SayChinese);:创建了一个SayHello委托的实例sayC,并将SayChinese方法作为参数传递给委托的构造函数。Console.WriteLine(sayC("欢迎大家"));:通过委托实例调用SayChinese方法,并输出结果。- 同理,
SayHello sayE = new SayHello(SayEgnlish);和Console.WriteLine(sayE("Welcome to"));是对SayEgnlish方法的委托调用。
- 简化的委托赋值方式
SayHello s1 = SayChinese;和SayHello s2 = SayEgnlish;:当委托类型和方法签名一致时,可以直接将方法赋值给委托变量,无需使用new关键字。Console.WriteLine(s1("好好好"));和Console.WriteLine(s2("Gooood"));:通过委托实例调用相应的方法。
- 使用 Lambda 表达式实例化委托
SayHello ss1 = con => con;:使用 Lambda 表达式创建委托实例ss1,con => con表示接受一个参数con并返回该参数本身。Console.WriteLine(ss1("niiiice"));:通过委托实例调用 Lambda 表达式。
- 匿名委托
SayHello ss3 = delegate(string s) { return s; };:使用匿名委托创建委托实例ss3,delegate(string s) { return s; }是一个匿名方法,直接在委托实例化时定义了方法体。Console.WriteLine(ss3("说中国话"));:通过委托实例调用匿名方法。
委托引用的方法定义
public static string SayChinese(string content)
{return content;
}public static string SayEgnlish(string content)
{return content;
}
public static string SayChinese(string content)和public static string SayEgnlish(string content):定义了两个静态方法,分别接受一个string类型的参数content,并返回该参数本身。这两个方法的签名与SayHello委托一致,可以被SayHello委托引用。
常规的委托实例化、简化的赋值方式、Lambda 表达式和匿名委托。委托在 C# 中是一种强大的机制,它允许将方法作为参数传递,实现了代码的灵活性和可扩展性。
namespace _1.委托的常用方式
{internal class Program{//委托的核心是跟委托的函数结构一样public delegate string SayHello(string c);static void Main(string[] args){//本质上其实就是把方法当作委托的参数SayHello sayC=new SayHello(SayChinese);Console.WriteLine(sayC("欢迎大家"));SayHello sayE=new SayHello(SayEgnlish);Console.WriteLine(sayE("Welcome to"));//简单的写法:必须类型一样SayHello s1 = SayChinese;SayHello s2 = SayEgnlish;Console.WriteLine(s1("好好好"));Console.WriteLine(s2("Gooood"));//最推荐SayHello ss1 = con => con;Console.WriteLine(ss1("niiiice"));//匿名委托:一次性委托SayHello ss3=delegate(string s) { return s; };Console.WriteLine(ss3("说中国话"));}public static string SayChinese(string content){return content;}public static string SayEgnlish(string content){return content;}}
}
相关文章:
C#委托(delegate)的常用方式
C# 中委托的常用方式,包括委托的定义、实例化、不同的赋值方式以及匿名委托的使用。 委托的定义 // 委托的核心是跟委托的函数结构一样 public delegate string SayHello(string c);public delegate string SayHello(string c);:定义了一个公共委托类型 …...
C#从入门到精通(35)—如何防止winform程序因为误操作被关闭
前言: 大家好,我是上位机马工,硕士毕业4年年入40万,目前在一家自动化公司担任软件经理,从事C#上位机软件开发8年以上!我们在开发的上位机软件运行起来以后,一般在右上角都有一个关闭按钮,正常情况下点击关闭按钮就能关闭软件,但是不排除我们不想关闭软件,但是因为不…...
docker本地镜像源搭建
最近Deepseek大火后,接到任务就是帮客户装Dify,每次都头大,因为docker源不能用,实在没办法,只好自己搭要给本地源。话不多说具体如下: 1、更改docker的配置文件,添加自己的私库地址,…...
Sqlserver安全篇之_TLS的证书概念
证书的理解 参考Sqlserver的官方文档https://learn.microsoft.com/zh-cn/sql/database-engine/configure-windows/certificate-overview?viewsql-server-ver16 TLS(Transport Layer Security)传输层安全和SSL(Secure Sockets Layer)安全套接字层协议位于应用程序协议层和TCP/…...
Kafka生产者相关
windows中kafka集群部署示例-CSDN博客 先启动集群或者单机也OK 引入依赖 <dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-clients</artifactId><version>3.9.0</version></dependency>关于主题创建 理论…...
技术问题汇总:前端怎么往后端传一个数组?
场景 现在一个专门负责复习算法的服务,筛选出了用户今天需要复习的笔记的ids,现在要调用笔记服务根据ids查询的接口。 请问复习服务怎么将ids发到笔记服务,笔记服务怎么接收。 思路 发的时候肯定是用字符串,接收的时候…...
【03】STM32F407 HAL 库框架设计学习
【03】STM32F407 HAL 库框架设计学习 摘要 本文旨在为初学者提供一个关于STM32F407微控制器HAL(Hardware Abstraction Layer)库框架设计的详细学习教程。通过本文,读者将从零开始,逐步掌握STM32F407的基本知识、HAL库的配置步骤…...
智能图像处理平台:图像处理配置类
这里我们先修改一下依赖,不用JavaCV,用openCV。 导入依赖: <!-- JavaCV 依赖,用于图像和视频处理 --> <!-- <dependency>--> <!-- <groupId>org.bytedeco</groupId>--> &l…...
【图文详解】什么是微服务?什么是SpringCloud?
目录 一.认识微服务架构 ??微服务带来的挑战 二.微服务解决方案SpringCloud ??SpringCloud的版本 ??SpringCloud和SpringBoot的关系 ??SpringCloud实现方案 Spring Cloud Netfix Spring Cloud Alibaba ??Spring Cloud 实现对比 在入门Spring Cloud 之前&…...
基于ssm的校园跑腿管理系统+vue
作者主页:舒克日记 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 系统共有管理员、用户两个角色 管理员主要的功能用户信息管理、任务信息管理、任务类型管理、接单信息管理、公告信息管理、投诉信息管理、公告类型管…...
5个GitHub热点开源项目!!
1.自托管 Moonlight 游戏串流服务:Sunshine 主语言:C,Star:14.4k,周增长:500 这是一个自托管的 Moonlight 游戏串流服务器端项目,支持所有 Moonlight 客户端。用户可以在自己电脑上搭建一个游戏…...
docker通用技术介绍
docker通用技术介绍 1.docker介绍 1.1 基本概念 docker是一个开源的容器化平台,用于快速构建、打包、部署和运行应用程序。它通过容器化技术将应用及其依赖环境(如代码、库、系统工具等)打包成一个标准化、轻量级的独立单元,实…...
#渗透测试#批量漏洞挖掘#某图创图书馆集群管理系统updOpuserPw SQL注入(CVE-2021-44321)
免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停…...
智能合约安全 | 合约无效化攻击
目录: 智能合约安全 合约无效化攻击 合约自毁函数 selfdestruct 攻击实现 漏洞防御 总结 智能合约安全 合约无效化攻击 合约无效化攻击类同于web安全中的逻辑漏洞中的一种 我们这里拿一个典型的例子来讲解 有这样一份智能合约, 每个人可以向其中发送1 eth 第七个…...
RabbitMQ 的介绍与使用
一. 简介 1> 什么是MQ 消息队列(Message Queue,简称MQ),从字面意思上看,本质是个队列,FIFO先入先出,只不过队列中存放的内容是message而已。 其主要用途:不同进程Process/线程T…...
【手撕算法】K-Means聚类全解析:从数学推导到图像分割实战
摘要 聚类算法是探索数据内在结构的利器!本文手撕K-Means核心公式,结合Python代码实现与图像分割案例,详解: ✅ 欧氏距离计算 ✅ 簇中心迭代更新 ✅ 肘部法则优化 目录 摘要 目录 一、算法核心思想 二、数学原理详解 2.1 …...
【SQL技术】不同数据库引擎 SQL 优化方案剖析
一、引言 在数据处理和分析的世界里,SQL 是不可或缺的工具。不同的数据库系统,如 MySQL、PostgreSQL(PG)、Doris 和 Hive,在架构和性能特点上存在差异,因此针对它们的 SQL 优化策略也各有不同。这些数据库…...
RabbitMQ系列(二)基本概念之Publisher
在 RabbitMQ 中,Publisher(发布者) 是负责向 RabbitMQ 服务器发送消息的客户端角色,通常被称为“生产者”。以下是其核心功能与工作机制的详细解析: 一、核心定义与作用 消息发送者 Publisher 将消息发送到 RabbitMQ 的…...
OAK相机的抗震性测试
在工业环境中,双目视觉相机必须具备与工作环境同等的坚固性。鉴于部分客户会将我们的相机应用于恶劣环境(例如安装在重型机械上),我们依据EN 60068-2-6:2008标准对相机进行了振动耐受性测试。 测试涉及的相机型号包括:…...
2025最新Nginx高频面试题
2025最新Nginx高频面试题 摘要:本文整理了2025年企业高频Nginx面试题,覆盖核心原理、配置优化、安全防护及云原生场景实战,助你轻松应对技术面试! 核心原理篇 1. Nginx的Master-Worker架构优势是什么? 答案…...
FModel实战指南:UE4/5游戏pak资源提取与3D模型导出
1. 为什么是FModel?——当UE4/5游戏资源提取变成“开箱即用”的工程问题你刚下载完《堡垒之夜》最新赛季的离线安装包,或者拿到一份《黑神话:悟空》的测试版本地资源目录,双击打开后只看到一堆命名像WindowsNoEditor.pak、Content…...
Rshell框架实战:红队内网渗透的信道管理与双平台协同
1. 这不是“教你怎么黑”,而是还原一次真实红队作业的完整切片Rshell框架——这个名字在渗透测试圈子里不算陌生,但真正把它用透、用稳、用出生产级效果的人,远比想象中少。我见过太多人把Rshell当成一个“带图形界面的msfvenomnc组合包”&am…...
n8n CVE-2025-68668沙箱逃逸漏洞深度解析与24小时应急指南
1. 这不是普通补丁——CVE-2025-68668 是 n8n 工作流引擎的“心脏停搏”级漏洞你刚收到企业安全团队的紧急邮件,标题加了三个感叹号:“n8n 集群所有节点需立即下线评估!”——而你负责维护的 37 个核心自动化流程,正支撑着订单履约…...
【Lindy人力资源自动化方案】:20年HR Tech专家亲授,3大落地陷阱与5步零失败实施路径
更多请点击: https://codechina.net 第一章:Lindy人力资源自动化方案全景图 Lindy 是一款面向中大型企业的开源人力资源自动化平台,聚焦于招聘管理、员工生命周期编排、组织架构动态建模与合规性审计四大核心能力。其架构采用云原生设计&…...
Google I/O 2026 全解析:从 Gemini 3.5 到 AI 智能体,一文看懂谷歌的 AI 全景布局
摘要: Google I/O 2026 盛大开幕,官方正式发布了 Gemini 3.5 Flash、Antigravity 2.0、Gemini Spark 个人智能体、全新 AI 搜索范式以及智能音频眼镜等一系列颠覆性技术。本文将为你全面梳理本次大会的核心干货,透视谷歌在智能体时代的全新战…...
Java SE与Spring Boot在智慧城市中的应用
Java SE与Spring Boot在智慧城市中的应用 在互联网大厂求职的面试中,技术栈与场景应用是考察重点。今天,我们将通过一位搞笑程序员燕双非的面试经历来了解Java SE与Spring Boot在智慧城市中的应用。 第一轮面试 场景:智慧城市的背景 面试官&a…...
华为麒麟芯片不外售背后的商业逻辑与技术护城河
1. 从一则新闻说起:麒麟芯片的“不对外”意味着什么前几天,华为轮值董事长徐直军先生在一次公开场合的发言,在科技圈里又激起了一阵讨论。他明确表示,华为“没有任何想法把麒麟芯片对外销售”。这句话乍一听,可能让不少…...
OpenRocket:开源火箭设计与飞行仿真的终极指南
OpenRocket:开源火箭设计与飞行仿真的终极指南 【免费下载链接】openrocket Model-rocketry aerodynamics and trajectory simulation software 项目地址: https://gitcode.com/GitHub_Trending/op/openrocket 你是否曾经梦想设计自己的火箭,但又…...
终极实战指南:openpilot自动驾驶系统从部署到深度应用
终极实战指南:openpilot自动驾驶系统从部署到深度应用 【免费下载链接】openpilot openpilot is an operating system for robotics. Currently, it upgrades the driver assistance system on 300 supported cars. 项目地址: https://gitcode.com/GitHub_Trendin…...
3步掌握Sabaki围棋软件:从新手到高手的完整指南
3步掌握Sabaki围棋软件:从新手到高手的完整指南 【免费下载链接】Sabaki An elegant Go board and SGF editor for a more civilized age. 项目地址: https://gitcode.com/gh_mirrors/sa/Sabaki 在围棋的智慧世界里,一款优秀的软件能让您的学习和…...
