黑马程序员技术交流社区
标题: 索引器访问问题 [打印本页]
作者: 闫常国 时间: 2013-5-10 22:28
标题: 索引器访问问题
本帖最后由 闫常国 于 2013-5-11 21:52 编辑
namespace t2
{
class Program
{
static void Main(string[] args)
{
Student s1 = new Student("张三",20);
Console.WriteLine(s1.Age);
Console.ReadKey();
}
}
class Student
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
private int age;
public int Age
{
get { return age; }
set { age = value; }
}
public Student(string name,int age)
{
this.name = name;
this.age = age;
}
//定义索引器,通过年龄访问
public Student this[int age]
{
get {
return Student[index]; //这里应该怎样通过年龄来操作对象的属性
}
}
}
}
作者: 许庭洲 时间: 2013-5-11 06:23
1. 用reflector反编译可以看出,索引器的内部本质上就是set_item和get_item方法;
2. 索引器允许类或结构的实例就像数组一样进行索引;
3. 索引器类似于属性,不同之处在于它们的访问器采用参数;
举个例子:
// Using a string as an indexer value
class DayCollection
{
string[] days = { "Sun", "Mon", "Tues","Wed", "Thurs", "Fri", "Sat" };
//This method finds the day or returns -1
private int GetDay(string testDay)
{
int i = 0;
foreach (string day in days)
{
if (day == testDay)
{
return i;
}
i++;
}
return -1;
}
// Theget accessor returns an integer for a given string
publicint this[string day]
{
get
{
return (GetDay(day));
}
}
}
class Program
{
staticvoid Main(string[] args)
{
DayCollection week = new DayCollection();
System.Console.WriteLine(week["Fri"]);
System.Console.WriteLine(week["Made-up Day"]);
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
输出
5
-1
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
作者: 王宝生 时间: 2013-5-11 06:33
你把你加注释的那句话改成return this[age].就好了。不过,你这样做没有什么意思,因为索引器一般是用于集合中的
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |