索引器indexer

一、索引器的基本概述

        索引器定义类似于属性,但其功能与属性并不相同,可以看成是属性的增强版,它能够让对象以类似数组的方式来存取,使程序看起来更为直观,更容易编写。

 

1、索引器的定义

 

定义的一般形式:

 

[修饰符] 数据类型this[索引类型 index]

 

{

 

    get{//获得属性的代码}                                                

 

    set{ //设置属性的代码}

 

}

 

修饰符包括public,protected,private,internal,new,virtual,sealed,override, abstract,extern.

 

this关键字用于定义索引器。this表示操作本对象的数组或集合成员,可以简单把它理解成索引器的名字,因此索引器不能具有用户定义的名称。

 

数据类型是表示将要存取的数组或集合元素的类型。

 

索引类型表示该索引器使用哪一类型的索引来存取数组或集合元素,可以是整数,可以是字符串。

 

get访问器返回值。set访问器分配值。访问器的用途是指示索引器是可读写、只读还是只写的,如果是可读写的,访问器get或set均不能省略;如果只读的,省略set访问器;如果是只写的,省略get访问器。

 

value关键字用于定义由 set 索引器分配的值。

 

索引器可被重载。

索引器可以有多个形参,例如当访问二维数组时。

 

举例:相册索引



2、另外,在接口中也可以声明索引器,接口索引器与类索引器的区别有两个:一是接口索引器不使用修饰符;二是接口索引器只包含访问器get或set,没有实现语句。

例如:

 



 

 表示所声明的接口IAddress包含3个成员:一个索引器、一个属性和一个方法,其中,索引器是可读写的。

 

一般示例:



3、索引器和属性的区别

 

属性

索引器

允许调用方法,如同它们是公共数据成员。

允许调用对象上的方法,如同对象是一个数组。

可通过简单的名称进行访问。

可通过索引器进行访问。

可以为静态成员或实例成员。

必须为实例成员。

属性的 get访问器没有参数。

索引器的 get 访问器具有与索引器相同的形参表。

属性的 set 访问器包含隐式 value 参数。

除了 value 参数外,索引器的 set 访问器还具有与索引器相同的形参表。

 

 

 

 

 

posted on 2011-09-22 08:48  springside例子  阅读(214)  评论(0编辑  收藏  举报