委托(C# 编程指南)
委托是一种引用类型,表示对具有特定参数列表和返回类型的方法的引用。 在实例化委托时,你可以将其实例与任何具有兼容签名和返回类型的方法相关联。 你可以通过委托实例调用方法。
委托用于将方法作为参数传递给其他方法。 事件处理程序就是通过委托调用的方法。 你可以创建一个自定义方法,当发生特定事件时,某个类(如 Windows 控件)就可以调用你的方法。 下面的示例演示了一个委托声明:
public delegate int PerformCalculation(int x, int y);
可将任何可访问类或结构中与委托类型匹配的任何方法分配给委托。 该方法可以是静态方法,也可以是实例方法。 这样便能通过编程方式来更改方法调用,还可以向现有类中插入新代码。
备注
在方法重载的上下文中,方法的签名不包括返回值。 但在委托的上下文中,签名包括返回值。 换句话说,方法和委托必须具有相同的返回类型。
将方法作为参数进行引用的能力使委托成为定义回调方法的理想选择。 例如,对比较两个对象的方法的引用可以作为参数传递到排序算法中。 由于比较代码在一个单独的过程中,因此可通过更常见的方式编写排序算法。
委托概述
委托具有以下属性:
-
委托类似于 C++ 函数指针,但委托完全面向对象,不像 C++ 指针会记住函数,委托会同时封装对象实例和方法。
-
委托允许将方法作为参数进行传递。
-
委托可用于定义回调方法。
-
委托可以链接在一起;例如,可以对一个事件调用多个方法。
-
方法不必与委托类型完全匹配。 有关详细信息,请参阅使用委托中的变体。
-
C# 2.0 版引入了匿名方法的概念,可以将代码块作为参数(而不是单独定义的方法)进行传递。 C# 3.0 引入了 Lambda 表达式,利用它们可以更简练地编写内联代码块。 匿名方法和 Lambda 表达式(在某些上下文中)都可编译为委托类型。 这些功能现在统称为匿名函数。 若要详细了解 lambda 表达式,请参阅 lambda 表达式。
- https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/delegates/
相关文章
- C#用HttpWebRequest通过代理服务器验证后抓取网页内容
- C# async/await异步编程深入理解
- c#中@标志的作用 C#通过序列化实现深表复制 细说并发编程-TPL 大数据量下DataTable To List效率对比 【转载】C#工具类:实现文件操作File的工具类 异步多线程 Async .net 多线程 Thread ThreadPool Task .Net 反射学习
- 网页基础:网页设计(我所知道的所有的html和css代码(含H5和CSS3)),如有错误请批评指正 wpf Listbox 实现按住ctrl键来取消选中 详解C#的协变和逆变 C#效率优化(1)-- 使用泛型时避免装箱
- 请求大神,C#如何截取字符串中指定字符之间的部分 按指定字符串分割 一分为二 c# 去除字符串中的某个已知字符
- C#实现多级子目录Zip压缩解压实例 NET4.6下的UTC时间转换 [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了 asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程 asp.net core异步进行新增操作并且需要判断某些字段是否重复的三种解决方案 .NET Core开发日志
- 【卷土重来之C#学习笔记】(二)c#编程概述
- Word控件Spire.Doc 【文档操作】教程(七):在 C#、VB.NET 中从 URL 下载 Word 文档
- C#【高级篇】 C# 接口(Interface)
- C#,图像二值化(23)——局部阈值的绍沃拉算法(Sauvola Thresholding)及源程序
- C#,字符串匹配(模式搜索)Sunday算法的源代码
- C#,码海拾贝(19)——一般实矩阵的QR分解(QR Decomposition)方法之C#源代码,《C#数值计算算法编程》源代码升级改进版
- 《C#并发编程经典实例》—— 转换.NET事件
- C#的Winform多语言实现(resx文件)
- C#使用Aspose.Words操作word文档(利用模板2)
- C#接口显示成员用法
- C#——await与async实现多线程异步编程
- 《C#零基础入门之百识百例》(九十六)本地数据交互 -- 读写PDF文件
- C#多线程编程之:Monitor使用示例及Mutex简介
- C#-并发编程 Promise, Future 和 Callback
- C#Win32API编程之PostMessage
- C# show和showdialog区别
- C#-【可空类型Nullable】-OK
- C#-类和结构(C# 编程指南)
- C#-类和结构(C# 编程指南)