首页 > 代码库 > C#初学之索引器(Indexer)

C#初学之索引器(Indexer)

注意:以下大部分内容为网上资料或其他朋友的博客摘录

本人初学.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)       使用索引指示器为我们带来了那些方便

               答:    可以不完全封闭字段(与属性相似)、像使用数组一样访问字段值或修改

 

—————————————学而不思则罔,思而不学则殆———————————————————

 

C#初学之索引器(Indexer)