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

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

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

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

В этом полном руководстве по C# 4.0 - языку программирования, разработанному специально для среды .NET, - детально рассмотрены все основные средства языка: типы данных, операторы, управляющие операторы, классы, интерфейсы, методы, делегаты, индексаторы, события, указатели, обобщения, коллекции, основные библиотеки классов, средства многопоточного программирования и директивы препроцессора. Подробно описаны новые возможности C#, в том числе PLINQ, библиотека TPL, динамический тип данных, а также именованные и необязательные аргументы. Это справочное пособие снабжено массой полезных советов авторитетного автора и сотнями примеров программ с комментариями, благодаря которым они становятся понятными любому читателю независимо от уровня его подготовки.
Книга рассчитана на широкий круг читателей, интересующихся программированием на C#.Введите сюда краткую аннотацию

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

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

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

Интервал:

Закладка:

Сделать

using System;

class PwrOfTwo {

/* Доступ к логическому массиву, содержащему степени числа 2 от 0 до 15. */

public int this[int index] {

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

get {

if((index >= 0) && (index < 16))

return pwr(index);

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]);

Console.WriteLine();

}

}

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

Первые 8 степеней числа 2: 1 2 4 8 16 32 64 128

А это некоторые ошибки: -1 -1

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

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 r, int с) {

rows = r; cols = с;

a = new int[rows, cols];

Length = rows * cols;

}

// Это индексатор для класса FailSoftArray2D.

public int this[int index1, int index2] {

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

get {

if(ok(index1, index2)) {

ErrFlag = false;

return a[index1, index2];

}

else

{

ErrFlag = true;

return 0;

}

}

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

set {

if(ok(index1, index2)) {

a[index1, index2] = value;

ErrFlag = false;

}

else

ErrFlag = true;

}

}

// Возвратить логическое значение true, если

// индексы находятся в установленных пределах,

private bool ok(int index1, int index2) {

if (index1 >= 0 & index1 < rows & index2 >= 0 &

index2 < cols) return true;

return false;

}

}

// Продемонстрировать применение двумерного индексатора,

class TwoDIndexerDemo {

static void Main() {

FailSoftArray2D fs = new FailSoftArray2D(3, 5);

int x;

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

Console.WriteLine("Скрытый сбой.");

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

Интервал:

Закладка:

Сделать

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

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


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

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

x