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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© luxun1912 中级黑马   /  2013-3-10 16:24  /  1171 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 luxun1912 于 2013-3-10 20:09 编辑

本人对索引器的使用不熟悉,哪位高手能详细的解释一下,最好能附一个供实例参考,谢谢了!

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

1 个回复

倒序浏览
{引用}
索引器是一种特殊的类成员,它能够让对象以类似数组的方式来存取,使程序看起来更为直观,更容易编写。
C#中的类成员可以是任意类型,包括数组或集合。当一个类包含了数组或集合成员时,索引器将大大简化对数组或集合成员的存取操作。
索引器定义形式如下:
[修饰符] 数据类型 this[索引类型 index]
{
       Get{//获得属性的代码}
       Set{//设置属性的代码}
}
数据类型表示将要存取的数组或集合元素的类型;索引类型表示该索引器使用哪一种类型的索引来存取数组或集合元素,可以是整数,也可以是字符串;this表示操作本对象的数组或集合成员,可以简单把它理解成索引器的名字,因此索引器不能具有用户定义的名称。
接口中的索引器
接口中的索引器与类索引器的区别有两个:
      一、接口索引器不使用修饰符;
      二、接口索引器只包含访问器get或set,没有实现语句。
      例如:
      Public interface IStudents
      {
             Student this[int index]{get;set}
       }
索引器综合代码演示:
  //声明一个接口
    public interface IStudents
    {
        Student this[int index] { get; set; }  //声明索引器
    }
    //创建一个学生类
    public class Student
    {
        public string name;
        public int no;
        public Student(string n, int num)
        {
            name = n;
            no = num;
        }
    }
    //创建一个学生集合
    public class Students : IStudents   //从接口派生
    {
        Student[] s = new Student[100];  //学生集合
        public Student this[int i]       //实现接口中的索引器
        {
            get
            {
                if (i > 0 && i < s.Length)
                    return s;
                else
                    return s[0];
            }
            set
            {
                if (i > 0 && i < s.Length)
                    s = value ;
                else
                    s[0] = value ;
            }
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            //创建学生集合对象
            Students stus = new Students();
            //通过索引器写入学生的数据
            stus[0] = new Student("tom", 101);
            stus[1] = new Student("david", 102);
            stus[2] = new Student("lily", 103);
            for (int i = 0; i < 3; i++)
            {
                //通过索引器输出学生的数据
                Console.WriteLine("姓名:{0} 学号:{1}", stus.name, stus.no);
            }
            Console.ReadKey();
        }
    }

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马