乱侃委托

可以全不信,不可全信,后果自负

 

-----------乱说开始-----------
何谓了解委托:
扩展方法
延迟特性
过早优化/迟优化
Lambda表达式
表达式树
重复计算陷阱
类型推断
隐式推断
匿名
传导性
装饰模式/观察者模式
分解循环/合并循环
delegate类
异步/回调
事件
Func/Action/Predicate
高阶函数
内联
闭包
泛型方法

经上这些,虽说有些不只针对 delegate(有部分是),
不过要想真正了解委托,
至少以上这些全都要涉及.
###################
开放委托:为静态方法创建
闭合委托:为实例方法创建
上面很常见,不过呢,
为实例方法创一个开放委托(1.1还干不了这个事)
知道委托中this
https://ironscheme.svn.codeplex.com/svn/IronScheme/Microsoft.Scripting/Utils/ReflectionUtils.cs
###
从方法的解度来看看,下面这些东东的本质区别,比较法
方法、函数(我习惯于把静太的称为函数)、委托、闭包、匿名
尤其是闭包与委托的关系与区别,看以下章节:
C#和.NET实战:平台、语言与框架
有这些一句话:
通过仔细观察,我们可以发现用于实例方法的.NET 1.x中的委托概念上与闭包很接近。
14.12.4 委托与闭包
http://book.csdn.net/bookfiles/588/10058819223.shtml
####
委托与接口对比
委托在.net框架中大量使用,为什么?
java中没有委托怎么办(或者C#没有委托怎么办)
接口就是替代方案之一,定一个接口,为一个类实现之,
传入实现该接口的类,差不多了。
比较一下:
接口:方法签明上的契约
委托:类与类之间通讯方式的契约(观察者模式)
接口比较明确,直接符合“依赖转置”的基本定义了
委托是最高层次上的解耦方式,同样适用于“依赖转置”
###########
高层行为
对象是附有行为的数据,而闭包是附有数据的行为
那委托呢,其实还不够OO也不完美,这里带出了事件,
事件干嘛去了,跟委托差不多,只可惜不够类型,只是“字段级”的
换言之,还不是First-Class Value二等公名,不是对象,无法自由传递。
事件只能在类内部可以自由一点,出了类只能是+=/-=而己,无法包装。
Delegate还不同其它基础类型,多头戏MulticastDelegate,
当时这样的设计是为了兼容,据说微软后悔了这样的设计,
Jeffrey Richter也说过,永完不该调用System.Delegate上的许多方法。
#######
反正.net的委托极不完美,
看看Invok还有回调,
实现的是多么的丑陋,
还有跟反射之间的纠缠不清
(还有研究内存布局,委托实现上的很多问题,
太奇怪了,自多感觉不该那么复杂的)

乱乱乱,还是乱,先说这些了..........

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值