下面是一個索引器的具體的應用例子,它對我們理解索引器的設計和應用很有幫助。
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類庫中有大量的應用。