索引器非常类似于属性,但索引器可以有参数列表,且只能作用在实例对象上,不能在类上直接作用
下面是一个索引器的具体的应用例子,它对我们理解索引器的设计和应用很有帮助。 using System;
class BitArray
{
    int[] bits;
    int length;
    public BitArray(int length) 
    {
        if (length < 0) 
            throw new ArgumentException();
        bits = new int[((length - 1) >> 5) + 1]; 
        this.length = length;
    }
    public int Length 
    {
        get { return length; }
    }
    public bool this[int index] 
    {
        get 
        {
            if (index < 0 || index >= length) 
                throw new IndexOutOfRangeException();
            else
return (bits[index >> 5] & 1 << index) != 0;
        }
        set
        {
            if (index < 0 || index >= length)
                throw new IndexOutOfRangeException();
            else if(value) 
                bits[index >> 5] |= 1 << index;
            else
                bits[index >> 5] &= ~(1 << index);
        }
    }
}
class Test
{
    static void Main() 
    {
        BitArray Bits=new BitArray(10);
        for(int i=0;i<10;i++)
            Bits[i]=(i%2)==0;            Console.Write(Bits[i]+" ");
}
}    编译并运行程序可以得到下面的输出:   True False True False True False True False True False   上面的程序通过索引器的使用为用户提供了一个界面友好的bool数组,同时又大大降低了程序的存储空间代价。索引器通常用于对象容器中为其内的对象提供友好的存取界面--这也是为什么C#将方法包装成索引器的原因所在。实际上,我们可以看到索引器在.NET Framework类库中有大量的应用。 原始出处:http://www.yesky.com/20020730/1622807.shtml你给的分太少,所以很多人不愿意进来解答。(大家都要有分才好让别人解答自已的问题)

解决方案 »

  1.   

    索引器的使用就好像你用 ArrayList 类一样。比如ArrayList list = new ArrayList();
    list.Add(...);
    ...Console.WriteLine(list[0].ToString());ArrayList 类因为定义了索引器,所以用户能像使用数组一样使用你定义的集合类。
      

  2.   

    DemoClass dc = new DemoClass();索引器允许访问如: dc[0], dc[1] 这样的对象数组的形式. 比如DemoClass在定义时:
    class DemoClass
    {
        private string[] m_var = {"h1","h2","h3"};    public string this[int indexer]
        {
           get {
               return m_var[indexer];
           }
        }
    }
    == 这里如果要取dc[0]的值, 0被传递给索引器的indexer参数. 其实和属性/方法差不多.    public string this[int indexer]
        public就不用说了, string是返回值类型, this这是索引器固定写法. int indexer是参数,索引器都有个参数,不一定是数值型,也可以是其他类型,当然这个参数名也可以不是indexer,比如是其他合法名称.