«Решайте примеры, используя индексы и свойства»


Использование индексаторов. Руководство по программированию на C#


Download 52.88 Kb.
bet2/7
Sana20.09.2023
Hajmi52.88 Kb.
#1681794
TuriКурсовая
1   2   3   4   5   6   7

1. Использование индексаторов. Руководство по программированию на C#


Применение индексаторов упрощает работу с синтаксисом, позволяя создавать классы, структуры и интерфейсы, к которым клиентские приложения могут обращаться так же, как к массиву. В этом случае компилятор создает свойство Item (или свойство с другим именем, если присутствует IndexerNameAttribute) и соответствующие методы доступа. Индексаторы чаще всего реализуются в типах, предназначенных преимущественно для инкапсуляции внутренней коллекции или массива. Допустим, у вас есть класс TempRecord, представляющий журнал с 10 измерениями температуры по шкале Фаренгейта за период в 24 часа. Этот класс содержит массив temps типа float[] для хранения значений температуры. Реализация индексатора в этом классе позволит клиентам получать доступ к значениям температуры в экземпляре TempRecord, используя float temp = tempRecord[4] вместо float temp = tempRecord.temps[4]. Это позволяет не только упростить синтаксис клиентских приложений, но и облегчить понимание кода класса и его предназначения другими разработчиками.


Чтобы объявить индексатор для класса или структуры, используйте ключевое слово this, как в следующем примере:
// Indexer declaration
public int this[int index]
{
// get and set accessors
}
При объявлении индексатора для объекта автоматически создается свойство с именем Item. Свойство Item не будет доступно непосредственно из выражения доступа к члену экземпляра. Кроме того, если вы добавите к объекту с индексатором собственное свойство Item, возникнет ошибка компилятора CS0102. Чтобы избежать этого, используйте IndexerNameAttribute, чтобы переименовать индексатор, как описывается ниже.

Примечания


Тип индексатора и типы его параметров должны иметь по крайней мере такой же уровень доступности, как и сам индексатор. Дополнительные сведения об уровнях доступа см. в разделе Модификаторы доступа.
Дополнительные сведения об использовании индексаторов с интерфейсом см. в разделе Индексаторы интерфейса.
Сигнатура индексатора определяет число и типы его формальных параметров. В ней не указываются тип индексатора или имена его формальных параметров. Если для одного класса объявляется несколько индексаторов, они должны иметь разные сигнатуры.
Значение индексатора не классифицируется как переменная и, соответственно, не может передаваться в качестве параметра ref или out.
Чтобы присвоить индексатору имя, которое можно использовать в других языках, используйте System. Runtime. CompilerServices. IndexerNameAttribute, как показано в этом примере:
// Indexer declaration
[System.Runtime.CompilerServices.IndexerName("TheItem")]
public int this[int index]
{
// get and set accessors
}
Этот индексатор будет иметь имя TheItem, поскольку оно переопределено атрибутом имени индексатора. По умолчанию используется имя индексатора Item.

Download 52.88 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling