当前位置: 首页 > 图文教程 > Java技术 > Java基础 > Java基础:小编浅谈C#与java的对象索引机制、指代的区别

Java基础
Java服务器端编程安全必读
编写一个JAVA的队列类
调用CUI程序的方法
Java多线程程序设计
在Eclipse中用SWT设计界面
Java数据对象JDO 2.0查询语言的特点
JSP概述
JSP预定义变量的使用
JSP Actions的使用
JSP中实现页面跳转
JSP之Taglib Directiv
用Java编写通过代理访问的应用程序
Java性能优化技巧集锦
JSP不是简化的Java
Java入门需掌握的30个基本概念
如何取得IP/用户名等信息
Java和javascript有何关系?
Windows 2000中如何配置JDK
Java学习的捷径
如何迅速成为Java高手

Java基础:小编浅谈C#与java的对象索引机制、指代的区别


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-12-26   浏览: 149 ::
收藏到网摘: n/a

多年以来,很多人认为微软与SUN是两大对立公司,究其原因是C#java的存在,使之成为两大公司相互抗衡的武器。因为C#java在很大地方都是很相似的,尽管如此,两者不同的地方也很多,所谓“于细微处见差异”。那么两者的相似和区别都在什么地方呢?下面小编就与大家一起分享C#java的对象索引机制、指代的区别,希望对大家有所帮助。

1对象索引机制(Indexer

 

  C#中引入了对象索引机制。说得明白点,对象索引其实就是对象数组。在上一篇文章中小编讲到属性,这里和上一篇文章中的属性联系起来一起说下,属性需要隐藏GetSet方法,而在索引机制中,各个对象的Get或者Set方法是暴露出来的。比如下面的例子就比较清楚地说明了这一点。

 

public class Skyscraper

{

 Story[] stories;

 public Story this [int index] {

  get {

   return stories [index];

  }

  set {

   if (value != null) {

    stories [index] = value;

   }

  }

 }

...

}

 

Skyscraper empireState = new Skyscraper (...);

empireState [102] = new Story ("The Top One", ...);

 

2 指代(Delegate

  指代这个玩意很特别,它有点象指针,但又不完全是,不过大家还是可以把它理解为一种类型安全的、面向对象的指针。顺便提一句,有很多书上把Delegate翻译成代理,我觉得这样翻不够确切,翻译成“指代”更恰当些,道理上吻合,并且还符合它的本来意思——微软本来就是用Delegate来“取代指针”,所以叫“指代”啊。

 

  说起指代,也许至今Sun还会对它愤愤不已,为什么呢?因为在Sun的标准Java中是没有这个东西的,它是微软99年发布的MSVJ++6添加的“新特性”。为此,两家公司吵得不亦乐乎,并且还专门在网上写了大量文章互相攻击。

 

  话归正传,指代有什么特点呢?一个明显的特点就是它具有了指针的行为,就好象从Java又倒回到了C++。在C#中,指代完成的功能大概和C++里面的指针,以及Java中的接口相当。但是,指代比起C++的“正宗指针”来又要高明一些,因为它可以同时拥有多个方法,相当于C++里面的指针能同时指向多个函数,并且是类型安全的,这一点体现了它的“对象”特性;而比起Java的接口来,指代高明的地方在于它能可以不经过内部类就调用函数,或者用少量代码就能调用多种函数,这一点体现了它的“指针”特性。