当前位置:编程学习 > C#/ASP.NET >>

C#与JAVA之比较(3)

答案:     5. 指代(Delegate)
    指代这个玩意很特别,它有点象指针,但又不完全是,不过大家还是可以把它理解
  为一种类型安全的、面向对象的指针。(什么是类型安全和面向对象就不用讲了吧?)
  顺便提一句,有很多书上把Delegate翻译成代理,我觉得这样翻不够确切,翻译成“指
  代”更恰当些,道理上吻合,并且还符合它的本来意思——微软本来就是用Delegate来
  “取代指针”,所以叫“指代”,呵呵。
    说起指代,也许至今Sun还会对它愤愤不已,为什么呢?因为在Sun的标准Java中是
  没有这个东西的,它是微软99年发布的MSVJ++6添加的“新特性”。为此,两家公司吵得
  不亦乐乎,并且还专门在网上写了大量文章互相攻击,有兴趣的朋友可以去看看(只有
  英文版)。
  http://www.Javasoft.com/docs/white/delegates.html
  http://msdn.microsoft.com/visualj/technical/articles/delegates/truth.asp
    话归正传,指代有什么特点呢?一个明显的特点就是它具有了指针的行为,就好象
  从Java又倒回到了C++。在C#中,指代完成的功能大概和C++里面的指针,以及Java中的
  接口相当。但是,指代比起C++的“正宗指针”来又要高明一些,因为它可以同时拥有多
  个方法,相当于C++里面的指针能同时指向多个函数,并且是类型安全的,这一点体现了
  它的“对象”特性;而比起Java的接口来,指代高明的地方在于它能可以不经过内部类
  就调用函数,或者用少量代码就能调用多种函数,这一点体现了它的“指针”特性。呵
  呵,很有“波粒二象性”的味道吧?指代最重要的应用在于对于事件的处理,下一节我
  们将重点介绍。

上一个:C#与JAVA之比较(4)
下一个:C#与JAVA之比较(2)

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,