Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Set код_доступа

Get код_доступа

Индексаторы

Индексатор — это особый вид свойства, которое можно добавлять в класс для обеспечения способа доступа, аналогичного доступу к массивам.

Индексатор (indexer) в C# является конструкцией, позволяющей программисту пользоваться привычным синтаксисом с квадратными скобками для обращения к объектам классов коллекций, являющихся членами класса.

В действительности индексаторы позволяют реализовать еще более сложные способы доступа, поскольку при необходимости разрешают определять и применять сложные типы параметров с использованием квадратных скобок; несмотря на это, применение простого численного индекса для доступа к элементам является наиболее распространенным.

Общий синтаксис индексатора:

спецификаторы тип_возвращ_значения this [список_параметров]

{

}

Код доступа представляет собой блоки операторов, которые выполняются при получении (get) или установки (set) значения элемента массива. Если отсутствует часть set, индексатор доступен только для чтения (read only), если отсутствует часть get, то индексатор доступен только для записи (write only).

Список параметров содержит описание индексов, по которым выполняется доступ к элементу. Чаще всего это целочисленный индекс.

В предыдущем примере можно добавить индексатор в семейство Animals объектов Animal следующим образом:

public class Animals: CollectionBase

{…

//здесь Animal - тип индексатора. Это тот тип, который будет получаться при //обращении к элементу посредством данного индексатора

public Animal this[int animalIndex] //Индексатор – особое свойство

{

get

{

return (Animal)List[animalIndex]; //явное приведение типа, так как List //возвращает объект класса System.Object

}

set

{

List[animalIndex] = value;

}

}

}

Ключевое слово this используется с параметрами, задаваемыми в квадратных скобках, однако во всем остальном оно выглядит почти точно так же, как и любое другое свойство. Такой синтаксис представляется весьма логичным, поскольку осуществляется доступ к индексатору, используя имя объекта, за которым следует один или несколько параметров, заключенных в квадратные скобки (например, MyAnimals[0]).


 

Возвращаемый тип определяет тип объекта, возвращаемого индексатором, а тип аргумента определяет, какие аргументы будут задействованы для индексации объекта класса коллекции, содержащего требуемые объекты. Хотя общепринято использовать в качестве индексов целые числа, допустимо индексировать объекты классов коллекций аргументами другого типа, например строками. Более того, можно указать несколько аргументов, создав тем самым многомерный массив! Ключевое слово this - это ссылка на объект, в котором появляется индексатор. Как и в случае обычного свойства, необходимо определить методы get() и set(), описывающие, как запрошенный объект будет извлекаться из объекта класса коллекции или записываться в него.

<== предыдущая лекция | следующая лекция ==>
Определение собственных семейств | Семейства с доступом по ключу и интерфейс IDictionary
Поделиться с друзьями:


Дата добавления: 2014-01-20; Просмотров: 609; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.012 сек.