注意:以下大部分内容为网上资料或其他朋友的博客摘录
本人初学.net,希望前辈们多多指教和交流
索引器(Indexer)是C#引入的一个新型的类成员,它使得类中的对象可以像数组那样方便、直观的被引用。 索引器非常类似于属性,但索引器包含索引参数(放在 [ ] 内),而且索引器是无名称的(由于 this 被索引,因此在声明中使用的“名称”为 this),且只能作用在实例对象上,而不能在类上直接作用。定义了索引器的类可以让您像访问数组一样的使用 [ ] 运算符访问类的成员。
下面给出一个例子:
请看代码,下面是类的定义,中间包含了一个索引器定义
public class Person
{
//定义两个字段信息
private string name;
private string password;
//定义一个 Name 属性来操作 name 字段
public string Name
{
set { name = value; }
get { return name; }
}
//定义一个 Password 属性来操作 password 字段
public string Password
{
set { password = value; }
get { return password; }
}
//定义索引器,name 字段的索引值为 0 ,password 字段的索引值为 1
public string this[int index]
{
get
{
if (index == 0) return name;
else if (index == 1) return password;
else return null;
}
set
{
if (index == 0) name = value;
else if (index == 1) password = value;
}
}
}
下面是使用索引器的方法:
protected void Page_Load(object sender, EventArgs e)
{
//声明并实例化这个类
Person p = new Person();
//使用索引器的方式来给类的两个属性赋值
p[0] = "jarod"; //从这里可以看出,对象中的字段就可以像数组那样轻松的访问了 【这里是给name和password赋值的】
p[1] = "123456,./";
//使用类属性取得两个字段信息
Label1.Text = p.Name + " / " + p.Password;
}
到此为止我想大家应该大致有个把握了,那么还有一些细节需要补充:
(1) 说明用户是否可以定义索引指示器的名称。
答:不能使用用户自定义的名称 就是this【索引表】
(2) 使用索引指示器的时候怎么避免数组越界问题
这个问题希望会的朋友解答一下
(3) 使用索引指示器为我们带来了那些方便
答: 可以不完全封闭字段(与属性相似)、像使用数组一样访问字段值或修改
—————————————学而不思则罔,思而不学则殆———————————————————