logo
CSharp_Prog_Guide

Индексирование с использованием других значений

C# не ограничивает тип индексатора целочисленными типами. Например, может оказаться полезным использование в качестве индекса индексатора строки. Такой индексатор можно реализовать, выполнив поиск строки в коллекции и возвратив соответствующее значение. Методы доступа можно перегружать, версии типа "string" и "integer" могут сосуществовать.

Example 2

Description

In this example, a class is declared that stores the days of the week. A get accessor is declared that takes a string, the name of a day, and returns the corresponding integer. For example, Sunday will return 0, Monday will return 1, and so on.

Code

// 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));

}

}

}