C# 委托的一些使用上的小技巧
c# 技巧 一些 委托 使用
2023-09-11 14:21:53 时间
1、委托是一种数据类型,我们可以在任何定义类的地方定义委托,在任何声明类的地方声明委托
2、初始化委托有两种方式,代码如下:
(1)、像类一样初始化委托
public delegate void SayHelloEventHandler(string _name); SayHelloEventHander sh = new SayHelloEventHander(ChineseSayHello);//创建了一个SayHelloEventHandler的实例,并给SayHelloEventHandler构造函数赋了初值ChineseSayHello private static void ChineseSayHello(string name) { }
(2)、赋初值
public delegate void SayHelloEventHandler(string _name); SayHelloEventHander handler; handler=new Program().ChineseSayHello;//通过赋初值的方式 private void ChineseSayHello(string name) { }
3、第一次初始化委托时,不能使用+=或者-=操作,只能使用2中提供的2中初始化委托的方式,否则编译其会报错。
4、初始化化完委托之后,委托可以使用+=或者-=操作,因为一个委托可以绑定多个方法,具体是多少,每测过,你可以写个循环测下,代码如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Delegate { class Program { public delegate void SayHelloEventHandler(string name); static void Main(string[] args) { Program p = new Program(); string n="张三"; SayHelloEventHandler handler; handler = p.SayChHi; handler += p.SayChHi; handler += p.SayChHi; handler += p.SayChHi; handler += p.SayChHi; handler += p.SayChHi; handler += p.SayChHi; handler += p.SayChHi; p.SayHi(n, handler); } public void SayHi(string name,SayHelloEventHandler handler) { handler(name); } public void SayChHi(string name) { Console.WriteLine("你好 " + name); Console.ReadKey(); } public void SayEnglishHi(string name) { Console.WriteLine("Hello " + name); Console.ReadKey(); } } }
绑定多次的结果就是执行多次绑定的方法,当前委托绑定了8个相同的方法,所以执行了8次同一个方法.
相关文章
- C#黔驴技巧之去重(Distinct)
- C#黔驴技巧之实现统计结果排名
- C# 实现WebSocket服务端实例
- asp.net RSA密钥之C#格式与Java格式转换(PEM格式)
- C#中dynamic的正确用法 以及 typeof(DynamicSample).GetMethod("Add");
- c#代码 天气接口 一分钟搞懂你的博客为什么没人看 看完python这段爬虫代码,java流泪了c#沉默了 图片二进制转换与存入数据库相关 C#7.0--引用返回值和引用局部变量 JS直接调用C#后台方法(ajax调用) Linq To Json SqlServer 递归查询
- 技术的正宗与野路子 c#, AOP动态代理实现动态权限控制(一) 探索基于.NET下实现一句话木马之asmx篇 asp.net core 系列 9 环境(Development、Staging 、Production)
- C#订阅与发布标准实现 visual studio code .net 开发 设计模式之☞策略模式 C#字符串转二进制、二进制转字符串 c# 接口的协变和逆变 c# 使用迭代器来创建可枚举类型 博客园首页新随笔联系订阅管理 随笔 - 117 文章 - 0 评论 - 57 c# 创建,加载,修改XML文档
- 请求大神,C#如何截取字符串中指定字符之间的部分 按指定字符串分割 一分为二 c# 去除字符串中的某个已知字符
- 利用反射快速给Model实体赋值 使用 Task 简化异步编程 Guid ToString 格式知多少?(GUID 格式) Parallel Programming-实现并行操作的流水线(生产者、消费者) c# 无损高质量压缩图片代码 8种主要排序算法的C#实现 (一) 8种主要排序算法的C#实现 (二)
- C#不用union,而是有更好的方式实现 .net自定义错误页面实现 .net自定义错误页面实现升级篇 .net捕捉全局未处理异常的3种方式 一款很不错的FLASH时种插件 关于c#中委托使用小结 WEB网站常见受攻击方式及解决办法 判断URL是否存在 提升高并发量服务器性能解决思路
- c# 把一个匿名对象赋值给一个Object类型的变量后,怎么取这个变量? c# dynamic动态类型和匿名类 详解C# 匿名对象(匿名类型)、var、动态类型 dynamic 深入浅析C#中的var和dynamic
- c#Winform程序调用app.config文件配置数据库连接字符串 SQL Server文章目录 浅谈SQL Server中统计对于查询的影响 有关索引的DMV SQL Server中的执行引擎入门 【译】表变量和临时表的比较 对于表列数据类型选择的一点思考 SQL Server复制入门(一)----复制简介 操作系统中的进程与线程
- 浅谈c#的三个高级参数ref out 和Params C#中is与as的区别分析 “登陆”与“登录”有何区别 经典SQL语句大全(绝对的经典)
- 浅谈JS中的!=、== 、!==、===的用法和区别 JS中Null与Undefined的区别 读取XML文件 获取路径的方式 C#中Cookie,Session,Application的用法与区别? c#反射 抽象工厂
- Word控件Spire.Doc 【文档操作】教程(一):在 C#、VB.NET 中创建、编写和保存 Word
- c#+JS原生上传图片、文件支持多文件上传
- C#面试题
- C# http 发送文件和接收文件的代码。
- C#操作Access数据库 增删改查
- C# 键盘事件 输入焦点
- 如何使用 Cdosys.dll 库使用 Visual C# 中发送电子邮件带有附件接收邮件
- C#中DataTable转换List和List再转为DataTable,以及DataRow转为实体对象
- 《C#零基础入门之百识百例》(四十一)类的定义和使用 -- 鸡兔同笼
- C# 把字符串类型日期转换为日期类型(转载)
- C# Task启动带参数和返回值的函数任务
- C#打印日志的小技巧
- 【C#】List<T>对象的深复制
- c#类的定义,c#中的关健字,C#标识符
- C#与.NET Framework c#编程语言,和java是一样的。(c#,java) -->javaweb,asp.net