索引器格式

public int this[int index]    // Indexer declaration
{
    
// 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]);
        }
    }
}




// 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"]);
    }
}

posted on 2008-06-04 01:13  LMT  阅读(242)  评论(0编辑  收藏  举报