A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 闫常国 中级黑马   /  2013-5-10 22:28  /  1064 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 闫常国 于 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];  //这里应该怎样通过年龄来操作对象的属性
            }
        }
    }
}

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

2 个回复

倒序浏览
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
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


回复 使用道具 举报
你把你加注释的那句话改成return this[age].就好了。不过,你这样做没有什么意思,因为索引器一般是用于集合中的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马