下面文章是从网上摘录的,看了半天总是不明白索引指示器在其中有什么作用?请帮忙指点,谢谢C#教程第十一课:索引指示器 
 
本节课将介绍C#的索引指示器,其目的包括:
1.了解什么是索引指示器
2.如何实现索引指示器
3.重载索引指示器
4.了解如何实现多参数的索引指示器
索引指示器并不难使用。它们的用法跟数组相同。在一个类内部,你可以按照你的意愿来管理一组数据的集合。这些对象可以是类成员的有限集合,也可以是另外一个数组,或者是一些复杂的数据结构。不考虑类的内部实现,其数据可以通过使用索引指示器来获得。如下是一个例子:
1.清单 11-1. 索引指示器的例子:IntIndexer.cs using System;
/// 
/// A simple indexer example.
/// 
class IntIndexer
{
private string[] myData;public IntIndexer(int size)
{
myData = new string[size];
for (int i=0; i < size; i++)
{
myData[i] = "empty";
}
}
public string this[int pos]
{
get
{
return myData[pos];
}
set
{
myData[pos] = value;
}
}static void Main(string[] args)
{
int size = 10;
IntIndexer myInd = new IntIndexer(size);
myInd[9] = "Some Value";
myInd[3] = "Another Value";
myInd[5] = "Any Value";
Console.WriteLine("\nIndexer Output\n");
for (int i=0; i < size; i++)
{
Console.WriteLine("myInd[{0}]: {1}", i, myInd[i]);
}
}
} 说明 1.清单 11-1演示了如何实现一个索引指示器, IntIndexer类有个名为myData的字符串数组,该数组是私有成员,因而其外部成员是看不见的。该数组是在构造函数中进行初始化的,该构造函数带有一个整型size参数,用来初始化myData数组,初始化时 把单词"empty"作为每个数组元素的值。2.IntIndexer类的下一成员是索引指示器(Indexer),由关键字this和方括号[int pos]标识出来。该成员带有一个位置参数pos。正如你已经猜测到,Indexer的实现同属性一样。Indexer有get 和set访问操作,就同属性中的用法一样。索引指示器(indexer)返回一个字符串,在定义索引指示器时,string这个类型名标志着其返回类型为字符串类型。3.Main()方法完成如下事情:初始化一个新的IntIndexer对象,添加一些值,并且打印出结果。其输出结果如下:Indexer OutputmyInd[0]: empty
myInd[1]: empty
myInd[2]: empty
myInd[3]: Another Value
myInd[4]: empty
myInd[5]: Any Value
myInd[6]: empty
myInd[7]: empty
myInd[8]: empty
myInd[9]: Some Value 
 

解决方案 »

  1.   

    都这么具体了,你还问???想得到什么回答???比如你有一个"数组类", 有索引指示器以后你就可以用 A[0] ,A[1].....来访问数组元素.
    如果没有索引指示器就不可以,比如:假设DataRow 类是有指示器的, 所以如果有DataRow dr = ......;
    你可以写代码  dr[0],dr[1]......来分别表示这行的每个格.假设DateTable类本身是没有索引指示器的,所以即使有 DataTable dt = ....;
    你也不可以写  dt[0],dt[1].....来分别表示DataTable中的每个行.
      

  2.   

    myData数组,本来就可以用myData[1]的形式访问数组元素,为什么还要使用索引指示器呢?