class BirthsList
{
    private int[] births;
    private string[] bithsRegionNames;    public int this[int index]
    {
        get{...}
        set{...}
    }    public int this[string indexName]
    {
        get{return this[NameToIndex(indexName)];}
        set{this[NameToIndex(indexName)] = value;}
    }    private int NameToIndex(string indexName)
    {
        //通过查找,将indexName转化为index,没找到则返回-1
    }
}以上例子,可以通过重载来决定访问哪个索引器,但如果BirthsList类
还有一个私有成员变量private int[] ages;也想通过索引器访问,
那该怎么办啊?请好手指教,谢谢!

解决方案 »

  1.   

    为什么一定要用索引器呢,你可以使用一个接受一个整数索引的方法?public int  GetAge(int i);
    public int GetBirth(int i);如果你坚持的话,要知道索引器可以接受多个参数的using System;public enum MyIndex
    {
    Age,
    Number
    }class TestIndexer
    {
      private int[] ages;
      private int[] numbers;  public TestIndexer()
      {
    ages = new int[]{1,2,3,4};
    numbers = new int[]{10,11,23,33};
      }  public int this[int i]
      {
    get { return ages[i];}
      }
      public int this[int i, MyIndex m]
      {
    get { if (m== MyIndex.Age) return ages[i];else return numbers[i];}
      }  static void Main()
      {
    TestIndexer t = new TestIndexer();
    Console.WriteLine(t[3]);
    Console.WriteLine(t[2,MyIndex.Age]);
    Console.WriteLine(t[2,MyIndex.Number]);
      }
    }