C#中的索引器原理

朋友们,还记得大家在C#言语开发中用到过索引器吗?

记得在得到DataGridView控件的某列值时:dgvlist.SelectedRows[0].Cells[0].Value;

记得在收获ListView控件的某列值时:listView1.SelectedItems[0].SubItems[0].Text;

回想在读取数据库记录给变量赋值时:result=dr[“StudentName”].ToString();

记得Dictionary中依据key值来收获Value值时:dic[“key”]等等

咱俩只晓得索引器给大家化解了成都百货上千难点,带来了许多有利,但您掌握它的法则所在吗?

  01.C#中的类成员能够是随机档次,包蕴数组和聚集。当一个类富含了数组和聚众成员时,索引器将大大简化对数组或集合成员的存取操作。

  02.定义索引器的点子与概念属性有个别接近,其貌似方式如下:

  [修饰符] 数据类型 this[索引类型 index]

  {

    get{//得到属性的代码}
                                             

    set{ //设置属性的代码}

  }

 

03.索引器的本色是性质

上面我们以3个例证来领悟索引器的用法和规律:

01.创建一个Test类,里面定义三个数组和2个索引器

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 索引器
{
   public class Test
    {
       //01.首先定义一个数组
       private string[] name=new string[2];

       //02.根据创建索引器的语法定义一个索引器,给name数组赋值和取值
       public string this[int index]
       {
           get { return name[index]; }
           set { name[index] = value; }
       }

    }
}

02.在Main方法中经过索引器给Test类中的数组赋值

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 索引器
{
    class Program
    {
        static void Main(string[] args)
        {
            //01.首先你得实例化Test类的对象
            Test test=new Test();
            //02.利用索引器给Test类中的数组赋值
            test[0] = "张总";
            test[1] = "吴总";
            //03.打印查看效果
            for (int i = 0; i < 2; i++)
            {
                Console.WriteLine(test[i]);
            }
            Console.ReadLine();
        }
    }
}

03.功力如下:

图片 1

 

如此那般就是索引器的行使

地点说到 

索引器的武当山真面目是性质

毋庸置疑,我们能够发现下边定义索引器的代码的IL(中间语言)是(属性的格式):

图片 2

 

 

 

那便是索引器