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

Индексатор может быть перегружен. В этом случае для выполнения выбирается тот вариант индексатора, в котором точнее соблюдается соответствие его параметра и аргумента, указываемого в качестве индекса. Ниже приведен пример программы, в которой индексатор массива классаFailSof tArrayперегружается для индексов типаdouble.При этом индексатор типаdoubleокругляет свой индекс до ближайшего целого значения.

// Перегрузить индексатор массива класса FailSoftArray.

using System;

class FailSoftArray {

int[] a; // ссылка на базовый массив

public bool ErrFlag; // обозначает результат последней операции

// Построить массив заданного размера, public FailSoftArray(int size) { a = new int[size];

Length = size;

}

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

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

if(ok(index))    {

ErrFlag = false; return a[index];

} else {

ErrFlag = true; return 0;

}

}

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

if(ok(index))    {

a[index] = value;

ErrFlag = false;

}

else ErrFlag = true;

}

}

/* Это еще один индексатор для массива FailSoftArray.

Он округляет свой аргумент до ближайшего целого индекса. */ public int this[double idx] {

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

int index;

// Округлить до ближайшего целого.

if( (idx - (int) idx) < 0.5) index = (int) idx;

else index = (int) idx + 1;

if(ok(index))    {

ErrFlag = false; return a[index];

} else {

ErrFlag = true; return 0;

}

}

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

int index;

// Округлить до ближайшего целого.

if( (idx - (int) idx) < 0.5) index = (int) idx;

else index = (int) idx + 1;

if (ok (index) )    {

a[index] = value;

ErrFlag = false;

}

else ErrFlag = true;

}

}

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

if(index >= 0 & index < Length) return true; return false;

}

}

// Продемонстрировать применение отказоустойчивого массива, class FSDemo {

static void Main {

FailSoftArray fs = new FailSoftArray(5);

// Поместить ряд значений в массив fs. for(int i=0; i < fs.Length; i++) fs[i] = i;

// А теперь воспользоваться индексами // типа int и double для обращения к массиву.

Console.WriteLine("fs[1]: " + fs[1]);

Console.WriteLine("fs[2]: " + fs[2]);

Console.WriteLine("fs[1.1]: " + fs[l.l]);

Console.WriteLine("fs[1.6]: " + fs[1.6]);

}

}

При выполнении этой программы получается следующий результат.

f S [ 1 ] :    1

fs [2] : 2 fs[1 -1 ] : 1 f s [ 1. 6 ] : 2

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

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

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных