Герберт Шилдт - 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», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

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

Интервал:

Закладка:

Сделать

else return -1;

}

// Аксессор set отсутствует.

}

int pwr(int p) { int result = 1;

for(int i=0; i < p; i++) result *= 2;

return result;

}

}

class UsePwrOfTwo { static void Main() {

PwrOfTwo pwr = new PwrOfTwo();

Console.Write("Первые 8 степеней числа 2: "); for(int i=0; i < 8; i++)

Console.Write(pwr[i] + " ");

Console.WriteLine();

Console.Write("А это некоторые ошибки: ");

Console.Write(pwr[-1] + " " + pwr[17]);

Вот к какому результату приводит выполнение этой программы.

Первые 8 степеней числа 2: 1 2 4 8 16 32 64 128 А это некоторые ошибки: -1 -1

Обратите вйимание на то, что в индексатор класса PwrOf Two включен только аксессор get, но в нем отсутствует аксессор set. Как пояснялось выше, такой индексатор служит только для чтения. Следовательно, объект класса PwrOf Two может указываться только в правой части оператора присваивания, но не в левой его части. Например, попытка ввести следующую строку кода в приведенную выше программу не приведет к желаемому результату.

pwr[0] =11; //не подлежит компиляции

Такой оператор присваивания станет причиной появления ошибки во время компиляции, поскольку для индексатора не определен аксессор set.

На применение индексаторов накладываются два существенных ограничения. Во-первых, значение, выдаваемое индексатором, нельзя передавать методу в качестве параметра ref или out, поскольку в индексаторе не определено место в памяти для его хранения. И во-вторых, индексатор должен быть членом своего класса и поэтому не может быть объявлен как static.

Многомерные индексаторы

Индексаторы можно создавать и для многомерных массивов. В качестве примера ниже приведен двумерный отказоустойчивый массив. Обратите особое внимание на объявление индексатора в этом примере.

// Двумерный отказоустойчивый массив.

using System;

class FailSoftArray2D {

int[,] a; // ссылка на базовый двумерный массив int rows, cols; // размеры массива

public int Length; // открытая переменная длины массива public bool ErrFlag; // обозначает результат последней операции

// Построить массив заданных размеров, public FailSoftArray2D(int г, int с) { rows = г; cols = с;

а = new int[rows, cols];

Length = rows * cols;

}

// Это индексатор для класса FailSoftArray2D. public int this[int indexl, int index2] {

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

if(ok(indexl, index2)) {

ErrFlag = false;

return a[indexl, index2];

} else {

ErrFlag = true; return 0;

}

}

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

if(ok(indexl, index2)) {

a[indexl, index2] = value;

ErrFlag = false;

}

else ErrFlag = true;

}

}

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

•if (indexl >= 0 & indexl < rows & index2 >= 0 & index2 < cols) return true;

return false;

}

}

// Продемонстрировать применение двумерного индексатора, class TwoDIndexerDemo { static void Main() {

FailSoftArray2D fs = new FailSoftArray2D(3, 5); int x;

// Выявить скрытые сбои.

Console.WriteLine("Скрытый сбой."); for (int i=0; i < 6; i++) fs[i, i]=i*10;

for(int i=0; i < 6; i++) {

x = f s [ i, i ] ;

if(x != -1) Console.Write (x + " ");

}

Console.WriteLine ();

// А теперь показать сбои.

Console.WriteLine("\пСбой с уведомлением об ошибках."); for(int i=0; i < 6; i++) {

fs[i,i] = i *10; if(fs.ErrFlag)

Console.WriteLine("fs[" + i + ", " + i + "] вне границ

}

for(int i=0; i < 6; i++) {

x = f s [ i, i ] ;

if(!fs.ErrFlag) Console.Write(x + " ");

else

Console.WriteLine("fs[" + i + ", " + i + "] вне границ");

}

}

}

Вот к какому результату приводит выполнение этого кода:

Скрытый сбой.

0 10 20 0 0 0

Сбой с уведомлением об ошибках.

fs[3, 3] вне границ

fs[4, 4] вне границ

fs[5, 5] вне границ

0 10 20 fs[3, 3] вне границ

fs[4, 4] вне границ

fs[5, 5] вне границ

Свойства

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

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

Интервал:

Закладка:

Сделать

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

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


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

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

x