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 delegates
和 closed delegates
译者注:这里不是作者这么分的,确实写在dotnet的官方文档和注释里。当然翻译的名称值得考量。
封闭委托:
当你创建一个指向实例对象方法的委托时,这个实例对象就被保存在委托的Target
属性中,这个属性(也就是包含方法的实例对象)被当作方法的第一个参数传给委托指向的方法。对于实例对象的方法来说,就是this
,对于静态方法来说,就是方法的第一个参数。这样的委托被称为封闭委托(closed delegates)因为他们以js闭包的方式把静态方法的第一个参数或者实例方法的this
封进了委托实例之中。
译者注: 这里说的很抽象,意思就是封闭委托会把某些参数作为
Target
属性带进委托中。后面有例子说明。
开放委托
我们同样也能创建一个不隐含传第一个参数的开式委托,这种委托不使用Target
属性