索引器格式
public
int
this
[
int
index]
//
Indexer declaration
{
// get and set accessors
}
{
// get and set accessors
}
比如声明了一个SeqList类,里面有一个一维数组myList
怎样通过SeqList[i] 访问到 myList[i] 就可以用索引器实现
class
IndexerClass
{
private int [] arr = new int [ 100 ];
public int this [ int index] // Indexer declaration
{
get
{
// Check the index limits.
if (index < 0 || index >= 100 )
{
return 0 ;
}
else
{
return arr[index];
}
}
set
{
if ( ! (index < 0 || index >= 100 ))
{
arr[index] = value;
}
}
}
}
class MainClass
{
static void Main()
{
IndexerClass test = new IndexerClass();
// Call the indexer to initialize the elements #3 and #5.
test[ 3 ] = 256 ;
test[ 5 ] = 1024 ;
for ( int i = 0 ; i <= 10 ; i ++ )
{
System.Console.WriteLine( " Element #{0} = {1} " , i, test[i]);
}
}
}
{
private int [] arr = new int [ 100 ];
public int this [ int index] // Indexer declaration
{
get
{
// Check the index limits.
if (index < 0 || index >= 100 )
{
return 0 ;
}
else
{
return arr[index];
}
}
set
{
if ( ! (index < 0 || index >= 100 ))
{
arr[index] = value;
}
}
}
}
class MainClass
{
static void Main()
{
IndexerClass test = new IndexerClass();
// Call the indexer to initialize the elements #3 and #5.
test[ 3 ] = 256 ;
test[ 5 ] = 1024 ;
for ( int i = 0 ; i <= 10 ; i ++ )
{
System.Console.WriteLine( " Element #{0} = {1} " , i, test[i]);
}
}
}
//
Using a string as an indexer value
class DayCollection
{
string [] days = { " Sun " , " Mon " , " Tues " , " Wed " , " Thurs " , " Fri " , " Sat " };
// This method finds the day or returns -1
private int GetDay( string testDay)
{
int i = 0 ;
foreach ( string day in days)
{
if (day == testDay)
{
return i;
}
i ++ ;
}
return - 1 ;
}
// The get accessor returns an integer for a given string
public int this [ string day]
{
get
{
return (GetDay(day));
}
}
}
class Program
{
static void Main( string [] args)
{
DayCollection week = new DayCollection();
System.Console.WriteLine(week[ " Fri " ]);
System.Console.WriteLine(week[ " Made-up Day " ]);
}
}
class DayCollection
{
string [] days = { " Sun " , " Mon " , " Tues " , " Wed " , " Thurs " , " Fri " , " Sat " };
// This method finds the day or returns -1
private int GetDay( string testDay)
{
int i = 0 ;
foreach ( string day in days)
{
if (day == testDay)
{
return i;
}
i ++ ;
}
return - 1 ;
}
// The get accessor returns an integer for a given string
public int this [ string day]
{
get
{
return (GetDay(day));
}
}
}
class Program
{
static void Main( string [] args)
{
DayCollection week = new DayCollection();
System.Console.WriteLine(week[ " Fri " ]);
System.Console.WriteLine(week[ " Made-up Day " ]);
}
}