Читаем C# 4.0 полное руководство - 2011 полностью

При конструировании объекту классаRangeArrayпередается нижняя граница массива в качестве параметраlow,а верхняя граница — в качестве параметраhigh.Затем значение параметраhighинкрементируется, поскольку пределы индексирования массива изменяются отlowдоhighвключительно. Далее выполняется следующая проверка: является ли верхний индекс больше нижнего индекса. Если это не так, то выдается сообщение об ошибке и создается массив, состоящий из одного элемента. После этого для массива распределяется память, а ссылка на него присваивается переменнойа.Затем свойствоLengthустанавливается равным числу элементов массива. И наконец, устанавливаются переменныеlowerBoundиupperBound.

Далее в классе RangeArray реализуется его индексатор, как показано ниже.

// Это индексатор для класса RangeArray. public int this[int index] {

// Это аксессор get. get {

if(ok(index) )    {

Error = false;

return a[index - lowerBound];

} else {

Error = true; return 0;

}

// Это аксессор set. set {

if(ok(index))    {

a[index - lowerBound] = value;

Error = false;

}

else Error = true;

}

}

Этот индексатор подобен тому, что использовался в классеFailSof tArray,за одним существенным исключением. Обратите внимание на следующее выражение, в котором индексируется массива.

index - lowerBound

В этом выражении индекс, передаваемый в качестве параметраindex,преобразуется в индекс с отсчетом от нуля, пригодный для индексирования массиваа.Данное выражение действует при любом значении переменнойlowerBound:положительном, отрицательном или нулевом.

Ниже приведен методok .

// Возвратить логическое значение true, если // индекс находится в установленных границах, private bool ok(int index) {

if(index >= lowerBound & index <= upperBound) return true; return false;

}

Этот метод аналогичен использовавшемуся в классеFailSof tArray,за исключением того, что в нем контроль границ массива осуществляется по значениям переменныхlowerBoundиupperBound.

КлассRangeArrayдемонстрирует лишь одну разновидность специализированного массива, который может быть создан с помощью индексаторов и свойств. Существуют, конечно, и другие. Аналогичным образом можно, например, создать динамические массивы, которые расширяются или сужаются по мере надобности, ассоциативные и разреженные массивы. Попробуйте создать один из таких массивов в качестве упражнения.

ГЛАВА 11 Наследование

Перейти на страницу:

Похожие книги

Access 2002: Самоучитель
Access 2002: Самоучитель

В книге рассматривается широкий круг вопросов, связанных с использованием программной среды Access 2002, которая является составной частью пакета Office 2002 и предназначена для создания банка данных в самых различных предметных областях.Подробно описывается методика проектирования объектов базы данных (таблицы, формы, отчеты, страницы доступа к данным, запросы, модули).Детально обсуждаются вопросы создания интегрированной базы данных в единой среде Access 2002: формирование БД с нуля, конвертирование в программную среду баз данных, созданных в ином программном окружении – Clarion, FoxPro.Особое внимание уделяется формированию разнообразных запросов к интегрированной базе данных Access 2002 с использованием языков программирования SQL, VBA и макросов.Приводятся общие сведения о возможностях языка обмена данными между различными компьютерами и приложениями (XML). Описываются возможности использования гиперссылок, связывающих базу данных с другими программными продуктами. Объясняется, как можно работать с базой данных Access 2002 без установки ее на компьютер, используя технологию ODBC (Open Data Base Connectivity). В приложениях приводятся количественные параметры Access 2002 и связанная с этой СУБД терминология.Предлагаемая книга будет полезна специалистам, занимающимся практической разработкой банков данных и приложений на их основе, а также студентам вузов, изучающим информатику.

Павел Юрьевич Дубнов

Программирование, программы, базы данных / ОС и Сети / Книги по IT