1.什么是索引器?
索引器是c#语言中的一种类成员,它可以让对象像数组一样被索引获取。
例如:
string obj = "Abc";
Console.WriteLine(obj[0]); //结果为A
2.一个小Demo说明索引基本用法。
我们需要有这么一个类,该类有一个int类型的数组成员变量名为arr;我们知道int类型成员变量我们实例对象需要通过属性的访问器get set 来访问,那么我们数组成员变量访问方式就是该属性的索引器(其实本质也是get set方法)。
using System;
class Sample
{
//数组成员变量
private int[] arr = new int[3];
public Sample()
{
arr[0]=100;
}
//定义数组成员变量索引,类实例对象通过索引访问数组成员变量。
public int this[int i]
{
get { return arr[i]; }
set { arr[i] = value; }
}
}
class Program
{
static void Main()
{
var values = new Sample();
values[1] = "200";
Console.WriteLine(values[0]);//结果为 100
Console.WriteLine(values[1]);//结果为200
}
}
3.索引器定义
索引器定义方式和属性访问器类似
public 类型 this[类型 参数名称]
{
get{}//get方法具体实现
set{} //set方法具体实现
}
例如:
class 对一个Hashtable类型的类成员设置索引
{
private Hashtable ht;//字符串索引用到哈希表来存放键值对
public MyStringIndex(Hashtable ht)
{
this.ht = ht;
}
public string this[string key]
{
get
{
string name =(string)ht[key];
return name;
}
set
{
ht[key] = value;
}
}
如果大家对于上面代码存有疑惑,可以选择自己熟悉的集合类型来变更理解,或者了解一下Hashtable(后续我会编写说明)。
4.小结
我们来看一道题目:
C#中索引器是否只能根据数字进行索引?是否允许多个索引器参数?