dotnet 委托的实现解析(2)开放委托和封闭委托 (Open Delegates vs. Closed Delegates)

本文是关于.NET委托的系列文章的第二篇,详细介绍了开放委托和封闭委托的区别。封闭委托在实例方法中保存了对象实例,而开放委托不隐含传递第一个参数,通常用于静态方法。文章通过实例展示了不同类型的委托创建和调用方式,并提醒读者注意特殊情况下的委托创建。此外,还提到了C#中扩展方法与委托的交互以及值类型作为静态方法第一个参数的限制。
摘要由CSDN通过智能技术生成

Python微信订餐小程序课程视频

https://edu.csdn.net/course/detail/36074

Python实战量化交易理财系统

https://edu.csdn.net/course/detail/35475

前言

这是个人对委托的理解系列第二篇,部分翻译自 Open Delegates vs. Closed Delegates – SLaks.Blog,好像还没人翻译过,加上部分个人理解。希望能对大家理解委托有所帮助。

正文

.Net支持两种委托:开放委托和封闭委托。open delegatesclosed delegates

译者注:这里不是作者这么分的,确实写在dotnet的官方文档和注释里。当然翻译的名称值得考量。

封闭委托:

当你创建一个指向实例对象方法的委托时,这个实例对象就被保存在委托的Target属性中,这个属性(也就是包含方法的实例对象)被当作方法的第一个参数传给委托指向的方法。对于实例对象的方法来说,就是this,对于静态方法来说,就是方法的第一个参数。这样的委托被称为封闭委托(closed delegates)因为他们以js闭包的方式把静态方法的第一个参数或者实例方法的this封进了委托实例之中。

译者注: 这里说的很抽象,意思就是封闭委托会把某些参数作为Target属性带进委托中。后面有例子说明。

开放委托

我们同样也能创建一个不隐含传第一个参数的开式委托,这种委托不使用Target属性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值