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

Java基础
Java基础:小编谈代码编写格式
Java基础:小编浅谈Java程序编写规范
Java基础:小编谈Java 文件格式
Java基础:小编谈会话、实体和消息驱动Bean对象
Java基础:小编教大家十进制数转十六进制数的算法
Java基础:EJB创建并使用会话对象
Java基础:浅析Java应用中获取系统属性
Java基础:小编分享构造器与方法的异同
Java基础:小编浅谈JDBC的应用
[JAVA]十四种Java开发工具点评
初学java常用开发工具介绍
Java编程中更新XML文档的常用方法
用Java实现HTTP文件队列下载
Singleton在Java中的应用
Java学习从入门到精通 4方法篇
Java学习从入门到精通 2书籍篇
Java学习从入门到精通 3过程篇
[基础知识]JAVA是什么
Java学习从入门到精通 1工具篇
[基础知识]接触 Java概述

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-12-26   浏览: 150 ::
收藏到网摘: 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的接口来,指代高明的地方在于它能可以不经过内部类就调用函数,或者用少量代码就能调用多种函数,这一点体现了它的“指针”特性。