设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2428|回复: 1
打印 上一主题 下一主题

【原创】胡乱侃委托,群聊有感,老贴放送

[复制链接]
跳转到指定楼层
1#
发表于 2014-2-22 16:21:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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


-----------乱说开始-----------
何谓了解委托:
扩展方法
延迟特性
过早优化/迟优化
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还有回调,
实现的是多么的丑陋,
还有跟反射之间的纠缠不清
(还有研究内存布局,委托实现上的很多问题,
太奇怪了,自多感觉不该那么复杂的)

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


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅

点击这里给我发消息

2#
发表于 2014-2-26 09:25:00 | 只看该作者
为什么不能插入表情,我想表示我看晕了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-3 00:23 , Processed in 0.084243 second(s), 25 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表