通俗易懂理解C#索引器

索引器就是一种访问类实例数据的语法糖,类中可以没有数组、列表、集合,可以随意按自己喜好设计认为合理的索引器,例如只要你喜欢,就可以把下面这个“李四”设计成索引器访问。

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["小四"];

0d89025b32224c0c85695325015b48c8.png

 还可以利用索引方式给“李四”改个名,像下面这样:

var friend = new Friend();
var name = friend["小四"] = "帅帅";

25a75b179ebe415ea446192de7d08804.png

不想让别人改名,就可以只设计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()["王五"];

结果按我们设计预期返回:

b5dbb3ec02474ffaab9abcc2a0a21462.png

小结一下,

我们可以在一个类中设计索引器,使类对象中的数据可以用索引语法糖访问,索引器的Key使用什么类型完全根据自己喜好,如果你愿意也可以用自定义类型的Key;索引能访问什么数据同样按自己喜好设计即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值