索引器就是一种访问类实例数据的语法糖,类中可以没有数组、列表、集合,可以随意按自己喜好设计认为合理的索引器,例如只要你喜欢,就可以把下面这个“李四”设计成索引器访问。
public class Friend
{
public string Zhang = "张三";
private string Li = "李四";
public string Wang = "王五";
public string this[string nick]
{
get
{
return nick.Equals("小四") ? Li : "不认识";
}
set
{
Li = value;
}
}
}
访问“张三”和王五,就用常用的对象属性访问就可以了,而“李四”就用如下索引方式访问,还是那句话,按你觉得合适的方式设计你的类即可。
var friend = new Friend();
var name = friend["小四"];
还可以利用索引方式给“李四”改个名,像下面这样:
var friend = new Friend();
var name = friend["小四"] = "帅帅";
不想让别人改名,就可以只设计get访问器,像下面这样:
public class Friend
{
public string Zhang = "张三";
private string Li = "李四";
public string Wang = "王五";
public string this[string nick]
{
get
{
return nick.Equals("小四") ? Li : "不认识";
}
}
}
我们再试试用索引访问“张三”和”王五“,
var name = new Friend()["王五"];
结果按我们设计预期返回:
小结一下,
我们可以在一个类中设计索引器,使类对象中的数据可以用索引语法糖访问,索引器的Key使用什么类型完全根据自己喜好,如果你愿意也可以用自定义类型的Key;索引能访问什么数据同样按自己喜好设计即可。