首页 > 代码库 > 索引器

索引器

一、索引器

C#中为了访问类的数组成员更加方便,更加直观,提供了索引器。

假设一个类如下:

class a{public int[] a = new int[20];}

我们实例化他为_a,若想访问a的某个元素,其语法如下:

a _a = new a();int m = _a.a[5];

如果类a定义了索引器,那么我们可以用如下的方法访问:

int m = _a[5];

这样显然代码更加简洁,逻辑上更直观。

下面代码展示了如何定义并使用一个索引器:

定义一个含有索引器的类:

 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5  6 namespace indexrTest 7 { 8     class xingxiIndexClass//作用是根据传入的字符串返回下标 9     {10         string[] days = { "a","b","c","d","e","f","g","h","i"};11         private int getDay(string testDay)12         {13             for(int j=0;j<days.Length;j++)14             {15                 if(days[j] == testDay)16                 {17                     return j;18                 }19             }20             throw new ArgumentOutOfRangeException(testDay, "testDay must be in the form \"Sun\", \"Mon\", etc");21         }22         public int this[string day]23         {24             get { return getDay(day); }25         }26     }27 }
View Code

通过索引器访问类成员:

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace indexrTest{    class Program    {        static void Main(string[] args)        {            fanxingClass<string> s = new fanxingClass<string>();            s[0] = "这是一个索引器";            Console.WriteLine(s[0]);            xingxiIndexClass week = new xingxiIndexClass();            Console.WriteLine(week["a"]);            Console.WriteLine(week["测试范围之外的天"]);        }    }}
Use Indexer

索引器的参数类型几乎可以是任意类型。定义规则是

[访问权限修饰符] [返回数据类型] this[参数类型 参数名]{get{}set{}}

索引器