索引器(Indexer)是C#引入的一个新型的类成员,它使得类中的对象可以像数组那样方便、直观的被引用。索引器非常类似于属性,但索引器可以有参数列表,且只能作用在实例对象上,而不能在类上直接作用。定义了索引器的类可以让您像访问数组一样的使用 [ ] 运算符访问类的成员。(当然高级的应用还有很多,比如说可以把数组通过索引器映射出去等等)
索引器的语法:
public class Indexsy { private string[] array ; public Indexsy(int num) { array = new string[num]; for (int i = 0; i < num; i++) { array[i] = "Array"+i; } } public string this[int num] { get { return array[num]; } set { array[num] = value; } } } ///索引器调用 Indexsy sy = new Indexsy(10); Response.Write(sy[5]);//输出Array5
多参数的实例
public class Indexsy { private string[] array ; public Indexsy(int num) { array = new string[num]; for (int i = 0; i < num; i++) { array[i] = "Array"+i; } } public string this[int num, string con] { get { if (num == 6) { return con; } else { return array[num]; } } set { if (num == 6) { array[num] = con; } else { array[num] = value; } } } } //方法调用 Indexsy sy = new Indexsy(10); sy[5,"10"] = "更换set值"; Response.Write(sy[5,""]+" "+sy[6,"更换内部参数"]+" "+sy[8,""]);//输出为更换set值 更换内部参数 Array8,
索引器和数组比较:
(1)索引器的索引值(Index)类型不受限制
(2)索引器允许重载
(3)索引器不是一个变量
索引器和属性的不同点
(1)属性以名称来标识,索引器以函数形式标识
(2)索引器可以被重载,属性不可以
(3)索引器不能声明为static,属性可以
原文:http://www.cnblogs.com/xiao-bei/p/3907232.html