索引器允许类或者结构的实例按照与数组相同的方式进行索引。索引器类似于属性,不同之处在于他们的访问采用参数。
比较简单但并不完全正确的理解,索引器就是与对象同名的数组。
它的定义与使用如下
public class IDXer
{
private string[] name=new string[10];
//索引器必须以this关键字定义,其实这个this就是类实例化之后的对象
public string this[int index]
{
get
{
return name[index];
}
set
{
name[index] = value;
}
}
}
public class Program
{
static void Main(string[] args)
{
//最简单索引器的使用
IDXer indexer = new IDXer();
//“=”号右边对索引器赋值,其实就是调用其set方法
indexer[0] = "张三";
indexer[1] = "李四";
//输出索引器的值,其实就是调用其get方法
Console.WriteLine(indexer[0]);
Console.WriteLine(indexer[1]);
Console.ReadKey();
}
}
索引器必须使用this关键字来定义,类似于属性,它有get和set方法。
那么索引器与属性、数组有什么区别呢?
- 最大的特点就是索引器的索引可以不是整数,数组的索引一定是自然数。
索引器的索引可以是浮点数,字符串等等类型。这样一来它就可以建立起某种对应关系,比如员工编号(字符串)对应员工姓名(字符串)。
- 索引器允许重载
- 索引器以函数签名方式 this 来标识,而属性采用名称来标识,名称可以任意
- 索引器不能用static 来进行声明,而属性可以。索引器永远属于实例成员,因此不能声明为static。