C# 高级编程个人笔记搬运 七(委托)

2024-04-19 23:08

本文主要是介绍C# 高级编程个人笔记搬运 七(委托),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近有点忙,我真的应该开香槟庆祝下,终于摆脱了那位写诡异代码的同事了,像俄罗斯套娃一样写代码的人才,感觉有些人真的不适合编程。虽然我也很菜,但是我努力当一只小青蛙。

委托在C#开发者中用的其实很多的,尤其是在做桌面应用程序的时候,在涉及到消息响应的功能模块时几乎都要用的吧。委托也是一个基础的技术了,但是我们今天也要好好的剖析一下这个。我们习惯于把数据作为参数传递,但是当我们要把方法作为参数传递给其它方法时,就会需要委托。

委托是寻址方法的.NET版本,在C++中,函数指针只不过是一个指向内存位置的指针,它不是类型安全的,因为它不知道实际指向的是什么,更别说参数和返回类型等项了。但是.NET委托是完全不同的,它是类型安全的,它定义了返回类型和参数的类型。委托类不仅包含对方法的引用,也可以包含对多个方法的引用(就是多播方式,后面慢慢讲)

我们经常用的lambda表达式与委托直接相关。当参数是委托类型时,就可以使用lambda表达式实现委托引用的方法。

解剖委托

当要把方法作为参数传给其它方法的时候,就需要使用委托。一般我们都是把对象或者具体的值作为参数进行传递,那么什么时候才是要把方法作为参数传给其它方法的时候呢?

①、启动线程和任务——在c#中,可以告诉计算机并行运行某些新的执行序列,同时运行当前的任务。这种序列说白了就是线程。我们经常会start( )就可以启动一个线程。如果要告诉计算机启动一个新的执行序列,就必须要告诉计算机在什么地方启动新线程,就是说Thread类的构造函数必须带有一个参数,该参数定义了线程调用的方法。例如:

// 我们不可能直接
Thread t = new Thread();
t.Start();  //这启动的啥玩意线程也不知道// 正确的做法
Thread t = new Thread(() => AA());
t.Start();  // 告诉计算机你要把AA方法用另起一个线程去跑

②、通用库类——许多库包含执行各种标准任务的代码。这些库通常可以自我包含,这样在编写库时,就会知道任务该如何执行。但是如果任务中还包含有子任务,只有使用该库的客户端代码才知道如何执行这些子任务。例如,

这篇关于C# 高级编程个人笔记搬运 七(委托)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/918687

相关文章

Spring Boot 整合 SSE的高级实践(Server-Sent Events)

《SpringBoot整合SSE的高级实践(Server-SentEvents)》SSE(Server-SentEvents)是一种基于HTTP协议的单向通信机制,允许服务器向浏览器持续发送实... 目录1、简述2、Spring Boot 中的SSE实现2.1 添加依赖2.2 实现后端接口2.3 配置超时时

mysql中的group by高级用法

《mysql中的groupby高级用法》MySQL中的GROUPBY是数据聚合分析的核心功能,主要用于将结果集按指定列分组,并结合聚合函数进行统计计算,下面给大家介绍mysql中的groupby用法... 目录一、基本语法与核心功能二、基础用法示例1. 单列分组统计2. 多列组合分组3. 与WHERE结合使

C# foreach 循环中获取索引的实现方式

《C#foreach循环中获取索引的实现方式》:本文主要介绍C#foreach循环中获取索引的实现方式,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、手动维护索引变量二、LINQ Select + 元组解构三、扩展方法封装索引四、使用 for 循环替代

C# Where 泛型约束的实现

《C#Where泛型约束的实现》本文主要介绍了C#Where泛型约束的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录使用的对象约束分类where T : structwhere T : classwhere T : ne

C#实现将Excel表格转换为图片(JPG/ PNG)

《C#实现将Excel表格转换为图片(JPG/PNG)》Excel表格可能会因为不同设备或字体缺失等问题,导致格式错乱或数据显示异常,转换为图片后,能确保数据的排版等保持一致,下面我们看看如何使用C... 目录通过C# 转换Excel工作表到图片通过C# 转换指定单元格区域到图片知识扩展C# 将 Excel

C#中async await异步关键字用法和异步的底层原理全解析

《C#中asyncawait异步关键字用法和异步的底层原理全解析》:本文主要介绍C#中asyncawait异步关键字用法和异步的底层原理全解析,本文给大家介绍的非常详细,对大家的学习或工作具有一... 目录C#异步编程一、异步编程基础二、异步方法的工作原理三、代码示例四、编译后的底层实现五、总结C#异步编程

C#TextBox设置提示文本方式(SetHintText)

《C#TextBox设置提示文本方式(SetHintText)》:本文主要介绍C#TextBox设置提示文本方式(SetHintText),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录C#TextBox设置提示文本效果展示核心代码总结C#TextBox设置提示文本效果展示核心代

shell编程之函数与数组的使用详解

《shell编程之函数与数组的使用详解》:本文主要介绍shell编程之函数与数组的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录shell函数函数的用法俩个数求和系统资源监控并报警函数函数变量的作用范围函数的参数递归函数shell数组获取数组的长度读取某下的

C#中DrawCurve的用法小结

《C#中DrawCurve的用法小结》本文主要介绍了C#中DrawCurve的用法小结,通常用于绘制一条平滑的曲线通过一系列给定的点,具有一定的参考价值,感兴趣的可以了解一下... 目录1. 如何使用 DrawCurve 方法(不带弯曲程度)2. 如何使用 DrawCurve 方法(带弯曲程度)3.使用Dr

MySQL高级查询之JOIN、子查询、窗口函数实际案例

《MySQL高级查询之JOIN、子查询、窗口函数实际案例》:本文主要介绍MySQL高级查询之JOIN、子查询、窗口函数实际案例的相关资料,JOIN用于多表关联查询,子查询用于数据筛选和过滤,窗口函... 目录前言1. JOIN(连接查询)1.1 内连接(INNER JOIN)1.2 左连接(LEFT JOI