索引器的概念总结
一:什么是索引器
索引函数是对属性的进一步扩展,它能够以数组的方式来控制对多个变量的读和写。
它同样可以被看成是 Get和Return Set和Value 这样的组合。
所不同的是:
×索引函数以this关键字加数组形式的下标进行定义,并通过数组形式的下标进行访问。
如:public bool this[int index]
public int this[int ind]
×索引函数的get访问和set访问函数带有 ◎参数◎(一般为整数类型或字符串类型)
×索引函数不可以是静态的。但是属性却是可以申明为static的。
×索引函数访问的对象不一定是连续的数组。也可以是多个离散的◎字段◎。
×索引函数可以放到接口中,抽象类中。
×class和struct只允许定义一个索引器,而且总是命名为this,虽然只有一个但是允许有
不同的重载。
二:索引器和数组的比较
×索引器可以使用非数值下标,而数组只能使用整数下标。
如:public int this [string name]{.....}
×索引器可以重载但是数组不可以。
public int this[int ind]
{}
public int this[char chInStr]//索引器1和索引器2构成了重载。
{}
×索引器不可以作为ref或out参数使用,而数组元素可以:
如:IntBits bits;
Method(ref bits[1]);
×进行数组的深度复制的时候可以考虑使用索引器。(p207框内解说)。
三:接口中使用索引器
×可以在接口中声明索引器
如:
interface IRawInt
{
bool this[int index]{get;set;}
}
struct RawInt:IRawInt
{
...
public bool this [int index]
{
get{....}
set{....}
}
...
}
×假如在一个类中实现了接口索引器,可以将索引器的实现声明为vitrual。这允许未来的派生类覆盖
get和set accessor