C#中委托(delegate)和多播委托的理解

本文介绍了C#中的委托(delegate)概念,强调它是寻址方法的.NET版本,允许将方法作为参数传递给其他方法。文中详细讨论了如何声明和实例化委托,包括多播委托的使用,以及它们在事件处理中的关键作用。同时提到了Action和Func泛型委托以及在事件(event)和委托结合的实例。
摘要由CSDN通过智能技术生成

委托

委托是寻址方法的.NET版本。

C#高级编程(第七版)中这是对委托的第一句描述。

什么是寻址方法?
简单理解为我们通过委托传递一个方法给另一个方法。

什么时候需要传递方法?
微软的官方文档C#高级编程(第七版)这本书都提到一个例子-----在对象的排序算法中,需要对对象进行比较,而不同对象比较的方法不同,所以比较两个对象的方法的引用可以作为参数传递到排序算法中,这个时候就需要传递方法。

通过什么传递方法?

在理解委托的时候经常将其与C++中的函数指针做比较,函数指针只是一个指向内存位置的指针,它不是类型安全的,我们无法判断这个指针实际指向什么,参数和返回类型更加无从知晓。但我们可以通过该函数指针获得该方法也可以理解为通过传递地址来传递该方法
函数指针是面向过程的,而C#是面向对象编程,几乎没有方法是孤立存在的,而是在调用方法之前需要与类的实例相关联。
所以.NET框架不允许使用函数指针这种直接的方法,因为这这很不面向对象!
那如何才符

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值