C#中重载索引器和一般方法重载有何不同??

来源:百度知道 编辑:UC知道 时间:2024/05/23 22:08:56
C#中: 创建一个索引器,用来存储学员的姓名。然后重载该索引器,以存储这些学员三个学科的分数 !一个学生对应三科成绩,只用索引器做。
[提示:创建一个能存储10个元素的字符串数组
使用set和get指定和检索this属性中的值
用三个整数值参数重载该索引,用于存储分数
使用set和get指定和检索this属性中的值]

。。。用其他方法做

索引器(Indexer)是C#引入的一个新型的类成员,它使得对象可以像数组那样被方便,直观的引用。索引器非常类似于我们前面讲到的属性,但索引器可以有参数列表,且只能作用在实例对象上,而不能在类上直接作用。下面是典型的索引器的设计,我们在这里忽略了具体的实现。

class MyClass
{
public object this [int index]
{
get
{
// 取数据
}
set
{
// 存数据
}
}
}

索引器没有像属性和方法那样的名字,关键字this清楚地表达了索引器引用对象的特征。和属性一样,value关键字在set后的语句块里有参数传递意义。实际上从编译后的IL中间语言代码来看,上面这个索引器被实现为:

class MyClass
{
public object get_Item(int index)
{
// 取数据
}
public void set_Item(int index, object value)
{
//存数据
}
}

由于我们的索引器在背后被编译成get_Item(int index)和set_Item(int index, object value)两个方法,我们甚至不能再在声明实现索引器的类里面声明实现这两个方法,编译器会对这样的行为报错。这样隐含实现的方法同样可以被我们进行调用,继承等操作,和我们自己实现的方法别无二致。通晓C#语言底层的编译实现为我们下面理解C#索引器的行为提供了一个很好的基础。

和方法一样,索引器有5种存取保护级别,和4种继承行为修饰,以及外部索引器。这些行为同方法没有任何差别,这里不