A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘亚龙 中级黑马   /  2012-12-2 13:01  /  1792 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘亚龙 于 2012-12-2 18:44 编辑

通过委托对象可以调用它所引用的方法,但是需要先将方法的引用传给委托,疑问在于既然知道要调用什么方法,为什么不直接调用需要的方法,还要通过委托来调用,感觉有点多此一举。那在实际应用中委托有什么更实际的好处?

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

6 个回复

倒序浏览
委托可以将方法当做参数传入另一个方法,怎么会多此一举。
回复 使用道具 举报
最明显的例子是 多线程里面 当你 开启一个线程,需要给线程 一个 方法,让它执行。 那么这个时候 方法就作为参数传递了。  它的实现就是 靠的委托。。
回复 使用道具 举报
委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
老大,事件就是基于委托的,想想事件有什么好处吧
回复 使用道具 举报
李伟斌 发表于 2012-12-2 18:20
老大,事件就是基于委托的,想想事件有什么好处吧

嗯,你的答案比较靠谱,能具体解释下吗
回复 使用道具 举报
当要把方法传给其他方法时, 需要使用委托.

        在 C 和 C++ 中, 只能提取函数的地址, 并传送为一个参数, C 是没有类型安全的, 可以把任何函数传送给需要函数指针的方法.  这种直接的方法会导致一些问题, 例如 类型的安全性, 在进行面向对象编程时,  方法很少是孤立存在的, 在调用前, 通常需要与类实例相关联.  而这种方法没有考虑到这个问题.   
        所以.NET Framework 在语法上不允许使用这种直接的方法.
        如果要传递方法,  就必须把方法的细节封装在一种新类型的对象中,  即委托.
       
        委托只是一种特殊的对象类型, 其特殊之处在于,   我们以前定义的所有对象都包含数据,

        而委托包含的只是方法的地址

评分

参与人数 1技术分 +2 收起 理由
郑文 + 2 很给力!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马