比如说你定义一个list
List<Person> list=new List<Person>();
现在这个list允许这样访问list[数字]这就是索引器,就是允许通过数字或者字符串或者其他方法访问元素。。。
说白了就是当初数组用
将一组同类型value用同类型的key来直接获取的方式
(1)当类的成员变量是一个集合类型时,就使用索引器(将索引器声明为static是一个语法错误)。
[访问修饰符]数据类型(和集合中元素一致)this [数据类型 标识符]
{
get{}; set{};
}
(2)例子:
class Class1
{
public string[] stringList = {"呼和浩特","长沙","南京"}; //成员变量是集合类型
public int[] zhi = new int[3];
public string this[int index]
{
get { return stringList[index];}
set { stringList[index] = value.ToString(); }
}
}
class Program
{
static void Main(string[] args)
{
Class1 a = new Class1();
Console.WriteLine(a[0]);
Console.WriteLine(a[1]);
a.stringList[0] = "西安"; //赋值的时候对象.属性的形式,只不过是属性有索引罢了
a[1] = "洛阳"; //第二种赋值方式
Console.WriteLine(a[0]);
Console.WriteLine(a[1]);
}
}
运行结果:呼和浩特
长沙
西安
洛阳
(3)属性可以保护字段的安全性,而索引器则是保护字段集合的安全性,字段集合没法用属性保护。
(4)属性的访问时直接用属性名来进行访问,而索引器的访问是用对象名[索引]进行访问集合中的元素。