C#索引器(Indexers)---逐步解析与理解(一)

C#索引器是什么?

C#中索引器是类的成员,如果我们在类中定义索引器,类就可以像虚拟数组一样,所以说索引器做为类的成员,可以像数组一样处理类中的成员;

案例:C#索引器

以一个案例来理解C#索引器;创建一个控制台应用程序,再创建一个Employee类,然后输入以下代码,下面这个类简单易懂,只是定义了一些属性,通过构造函数进行初始化;

 

 1 namespace IndexersDemo
 2 {
 3     public class Employee
 4     {
 5         //Declare the properties
 6         public int ID { get; set; }
 7         public string Name { get; set; }
 8         public string Job { get; set; }
 9         public double Salary { get; set; }
10         public string Location { get; set; }
11         public string Department { get; set; }
12         public string Gender { get; set; }
13 
14         //Initialize the properties through constructor
15         public Employee(int ID, string Name, string Job, int Salary, string Location, 
16                         string Department, string Gender)
17         {
18             this.ID = ID;
19             this.Name = Name;
20             this.Job = Job;
21             this.Salary = Salary;
22             this.Location = Location;
23             this.Department = Department;
24             this.Gender = Gender;
25         }
26     }
27 }
View Code

 

创建Employee类的实例,像数组一样使用employee对象;创建主函数,用索引处理Employee数据;

 1 using System;
 2 namespace IndexersDemo
 3 {
 4     class Program
 5     {
 6         static void Main(string[] args)
 7         {
 8             //Creating the Employee instance
 9             Employee emp = new Employee(101, "Pranaya", "SSE", 10000, "Mumbai", "IT", "Male");
10 
11             //Accessing Employee Properties using Indexers i.e. using Index positions
12             Console.WriteLine("EID = " + emp[0]);
13             Console.WriteLine("Name = " + emp[1]);
14             Console.WriteLine("Job = " + emp[2]);
15             Console.WriteLine("Salary = " + emp[3]);
16             Console.WriteLine("Location = " + emp[4]);
17             Console.WriteLine("Department = " + emp[5]);
18             Console.WriteLine("Gender = " + emp[6]);
19             
20             Console.ReadLine();
21         }
22     }
23 }
View Code

然后调试程序,会有如下错误提示:

 

 这是因为我们不能直接将索引应用到类中。我们能在数组中应用索引,但是我们不能在Employee这种用户自定义类中这么做;数组array是预定义类,类中的索引动作都有逻辑进行执行,这样我们就能用索引器进行程序处理。但是,Employee类是用户自定义类,我们无法 像数组那样使用预定义的逻辑处理用户自定义类。

如果希望像数组一样处理类,首先需要在类中定义索引器;一旦在类中定义了索引器,就能使用索引位置处理类的值。

c#中如何定义索引器?

 需要按照下述句法规则在类中定义索引器

 

 

 

 让我们解读一下上面的语法:

1、修饰符:修饰符没什么可说的,就是诸如public ,private ,protected等待访问说明符(access specifiers);

2、类型:如上面处理过的integer整型(ID),string(Name,job ,Location,and Gender),还有double类型,所以这里我们需要用到对象类型,Object类型可以返回任意类型;

3、This:This关键字告诉我们,我们在当前类中定义了索引器,当前类是Employee;

4、int index 或string name : int索引类型或字符串string类型是用来表示索引器使用哪个类型的索引来存取数组元素,可以是整型,也可以是字符串类型。

5、Get 和 Set:get存取器(Accessor)用来返回某个元素;set存取器用来设定某个元素的值;

实例:C#索引器

 

posted @ 2022-02-12 22:36  chenlight  阅读(334)  评论(1编辑  收藏  举报