需求:在班级类中用学员类数组保存学员,若想访问该数组需要用索引,这样我们必须非常清楚数组中元素的索引,使用起来不方便,因为我们很容易记住学员的名字,所以想通过学员名字访问该数组。于是:
解决方案:
1.将原来班级类中的数组属性Student[]改为Students对象;
2.添加一个Students类并加入索引器,然后将它的访问方式重载,使用姓名进行访问(注意:此时班级类中已经没有了学员类型的数组,所以要在Students类中定义学员类型的数组作为属性)
索引器代码如下:
public Student this[int index]
{
get { return stu[index]; }
}
public Student this[string name]
{
get
{
for (int i = 0; i < stu.Length; i++)
{
if (stu[i].Name.ToString() == name)
{
return stu[i];
}
}
return null;
}
}
然后在访问的时候就可以通过学员姓名访问:
MyClass myClass=new MyClass("t001");//创建一个班级对象
Console.WriteLine(myClass.Students[2].Name.ToString());//通过索引访问
Console.WriteLine(myClass.Students["Jay"].Name.ToString());//通过姓名访问