索引器Indexers
C#
引入了一个索引器(Indexers)的功能,它能让我们像处理数组一样处理对象。在C#社区中,我们又把它叫做“智能数组(smart arrays)”。定义C#索引器就像定义属性一样方便。(这里“属性”指property,
.net程序员的盲点(二):两个“属性”引起的歧异-property和attribute的区别
)
下面是它的结构















modifier
:修饰词,如private, public, protected or internal
this
:在C#中this是一个特殊的关键字,它表示
引用类的当前实例。在这里它的意思是当前类的索引。
argument list
:这里指索引器的参数。
它有几个规则:1. ref 和 out 参数不能使用
2.
至少有一个参数
3.
尽量使用
整数或者字符串类型的参数
下面是一个索引器的例子








































下面分别举几个继承、多态和抽象类与索引器的例子
索引器(Indexers)和继承









































索引器(Indexers)和多态

























































抽象的索引器(Indexers)

















































索引器和属性(Property)
1.
索引器是以它的标识符来作为参数标识的。但是属性是以它的名称来作为参数标识的。
注:this [int i1]是以int作为它的标识,和this [int i2]属于同一个索引器。
2.
索引器一般访问的实例对象。但是属性一般访问的是静态对象。
3.
索引器一般使用数组的方式来访问。但是属性一般使用对象方法的方式访问。
注:索引器:
MyClass mc = new MyClass();
mc[0] = "Rajesh";
属性
:
MyClass mc = new MyClass();
mc.Name = "Rajesh";
小结
1.
索引器是可以进行重载、多态和抽象的,这点和一般的成员函数没有什么区别。
2.
参数列表(argument list)可以有几个参数组成。this [int i1,int i2]
3.
一个类存在两个或者两个以上的索引器时,参数列表(argument list)必须不同。this [int i1]和this [int i2]属于同一个索引器;this [int i1]和this [string s2]属于不同的索引器;
4.C#
没有静态(static)的索引器。