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

Java基础
java基础:小编浅谈java对象
Java基础:孙鑫谈Java中文乱码问题产生原因分析(一)
Java基础:孙鑫谈Java中文乱码问题产生原因分析(二)
Java基础:小编谈JDBC
Java基础:小编详谈Java编码规则并不是老生常谈
Java基础:小编详谈AOP概念
Java基础:小编谈java多维数组
Java基础:小编谈Javascript之DOM的使用(25条)
Java基础:小编杂谈动态语言
Java基础:程序员之家七月份Java基础总结
Java基础:XHTML中css+div布局(经典8条)
Java基础:小编浅谈Spring基于三大模板的Web表示层技术
Java基础:浅谈多线程那点事
Javai基础:浅谈封装的那些事
Java基础:小编浅谈JavaScript中自定义函数那些事
Java基础:小编谈JavaScript中使用原型来创建对象
Java基础:CSS那些事
Java基础:小编对JavaScript的一些认识
Java基础:小编浅谈JavaScript与Java区别何在
Java基础:小编谈继承的语法

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


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