Герберт Шилдт - C# 4.0 полное руководство - 2011

Здесь есть возможность читать онлайн «Герберт Шилдт - C# 4.0 полное руководство - 2011» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Жанр: Старинная литература, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

C# 4.0 полное руководство - 2011: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «C# 4.0 полное руководство - 2011»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

C# 4.0 полное руководство - 2011 — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «C# 4.0 полное руководство - 2011», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Наличие обоих аксессоров, get и set, в индексаторе не является обязательным. Так, можно создать индексатор только для чтения, реализовав в нем один лишь аксессор get, или же индексатор только для записи с единственным аксессором set.

Перегрузка индексаторов

Индексатор может быть перегружен. В этом случае для выполнения выбирается тот вариант индексатора, в котором точнее соблюдается соответствие его параметра и аргумента, указываемого в качестве индекса. Ниже приведен пример программы, в которой индексатор массива класса 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

Как показывает приведенный выше результат, индексы типа double округляются до ближайшего целого значения. В частности, индекс 1.1 округляется до 1, а индекс 1.6 — до 2.

Представленный выше пример программы наглядно демонстрирует правомочность перегрузки индексаторов, но на практике она применяется нечасто. Как правило, индексаторы перегружаются для того, чтобы использовать объект определенного класса в качестве индекса, вычисляемого каким-то особым образом.

Индексаторы без базового массива

Следует особо подчеркнуть, что индексатор совсем не обязательно должен оперировать массивом. Его основное назначение — предоставить пользователю функциональные возможности, аналогичные массиву. В качестве примера в приведенной ниже программе демонстрируется индексатор, выполняющий роль массива только для чтения, содержащего степени числа 2 от 0 до 15. Обратите внимание на то, что в этой программе отсутствует конкретный массив. Вместо этого индексатор просто вычисляет подходящее значение для заданного индекса.

// Индексаторы совсем не обязательно должны оперировать отдельными массивами.

using System;

class PwrOfTwo {

/* Доступ к логическому массиву, содержащему степени числа 2 от 0 до 15. */ public int this[int index] {

// Вычислить и возвратить степень числа 2. get {

if((index >= 0) && (index < 16)) return pwr(index);

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «C# 4.0 полное руководство - 2011»

Представляем Вашему вниманию похожие книги на «C# 4.0 полное руководство - 2011» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «C# 4.0 полное руководство - 2011»

Обсуждение, отзывы о книге «C# 4.0 полное руководство - 2011» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x