在程序開發過程中,常常需要對一組對象進行訪問,通常是創建數組列表,通過操作數組的方式進行訪 問.C#提供的索引指示器使我們可以方便且高效的完成對一組對象的訪問.通常,我們先創建一個容器類, 用於存儲對象,並且通過實現枚舉器接口提供相應的操作方法.以下示例程序演示了如何創建並使用索引 指示器.
第一步:創建容器類
這段代碼中,使用了ARRAYLIST,使我們可以利用ARRAYLIST的 功能特性管理對象;另外,實現IENUMERATOR接口,提供如MOVENEXT,RESET等方法,並且使容器類可以支持 FOREACH操作.
class Employees:IEnumerator //為了使容器支持( FOREACH...IN... )操 作,必須實現IENUMERATOR接口 )
{
private ArrayList m_Employees;
//定義 一個ARRAYLIST對象
private
int m_MaxEmployees;
//定義容器可接受的 最大對象數量
//構造器,創建ARRAYLIST對象,並且定義可接受的最大對象數量
public Employees( int MaxEmployees )
{
m_MaxEmployees = MaxEmployees;
m_Employees = new ArrayList( MaxEmployees );
}
//按照索引ID創建索引指示器
public Employee
this[
int index]
{
get
{
if ( index < 0 || index > m_Employees.Count -1 )
{
return null;
}
return ( Employee ) m_Employees[index];
}
set
{
if ( index <0 || index > m_MaxEmployees-1 )
{
return ;
}
m_Employees.Insert( index,value );
}
}
//自定義索引指示器
public Employee
this[
string SSN]
{
get
{
Employee empReturned = null;
foreach ( Employee employee in m_Employees )
{
if ( employee.SSN == SSN )
{
empReturned = employee;
break;
}
}
return empReturned;
}
}
//提供容器內對象數量
public
int Length
{
get
{
return m_Employees.Count;
}
}
//實現IENUMERATOR接口
public IEnumerator GetEnumerator( )
{
return m_Employees.GetEnumerator( );
}
public bool MoveNext( )
{
return m_Employees.GetEnumerator( ).MoveNext( );
}
public void Reset( )
{
m_Employees.GetEnumerator( ).Reset( );
}
public object Current
{
get
{
return m_Employees.GetEnumerator( ).Current;
}
}
}