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

Тут можно читать онлайн Герберт Шилдт - C# 4.0: полное руководство - бесплатно ознакомительный отрывок. Жанр: comp-programming, издательство ООО И.Д. Вильямс, год 2011. Здесь Вы можете читать ознакомительный отрывок из книги онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    C# 4.0: полное руководство
  • Автор:
  • Жанр:
  • Издательство:
    ООО И.Д. Вильямс
  • Год:
    2011
  • Город:
    Москва -- Киев
  • ISBN:
    978-5-8459-1684-6
  • Рейтинг:
    3.93/5. Голосов: 141
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

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

C# 4.0: полное руководство - описание и краткое содержание, автор Герберт Шилдт, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

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


Книга рассчитана на широкий круг читателей, интересующихся программированием на C#.Введите сюда краткую аннотацию

C# 4.0: полное руководство - читать онлайн бесплатно ознакомительный отрывок

C# 4.0: полное руководство - читать книгу онлайн бесплатно (ознакомительный отрывок), автор Герберт Шилдт
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

------------------------------------

Создаваемые пользователем классы будут автоматически получать свойства и методы, определенные в классе Exceptionи доступные для них. Разумеется, любой из этих членов класса Exceptionможно переопределить в создаваемых классах исключений.

Когда создается собственный класс исключений, то, как правило, желательно, чтобы в нем поддерживались все конструкторы, определенные в классе Exception. В простых специальных классах исключений этого нетрудно добиться, поскольку для этого достаточно передать подходящие аргументы соответствующему конструктору класса Exception, используя ключевое слово base. Но формально нужно предоставить только те конструкторы, которые фактически используются в программе.

Рассмотрим пример программы, в которой используется исключение специального типа. Напомним, что в конце главы 10 был разработан класс RangeArray, поддерживающий одномерные массивы, в которых начальный и конечный индексы определяются пользователем. Так, например, вполне допустимым считается массив, индексируемый в пределах от -5 до 27. Если же индекс выходил за границы массива, то для обработки этой ошибки в классе RangeArrayбыла определена специальная переменная. Такая переменная устанавливалась и проверялась после каждой операции обращения к массиву в коде, использовавшем класс RangeArray. Безусловно, такой подход к обработке ошибок "неуклюж" и чреват дополнительными ошибками. В приведенном ниже улучшенном варианте класса RangeArrayобработка ошибок нарушения границ массива выполняется более изящным и надежным способом с помощью специально генерируемого исключения.

// Использовать специальное исключение для обработки

// ошибок при-обращении к массиву класса RangeArray.

using System;

// Создать исключение для класса RangeArray.

class RangeArrayException : Exception {

/* Реализовать все конструкторы класса Exception. Такие конструкторы просто реализуют конструктор базового класса. А поскольку класс исключения RangeArrayException ничего не добавляет к классу Exception, то никаких дополнительных действий не требуется. */

public RangeArrayException() : base() { }

public RangeArrayException(string str) : base(str) { }

public RangeArrayException(

string str, Exception inner) : base(str, inner) { }

protected RangeArrayException(

System.Runtime.Serialization.SerializationInfo si,

System.Runtime.Serialization.StreamingContext sc) : base(si, sc) { }

// Переопределить метод ToString()

// для класса исключения RangeArrayException.

public override string ToString() {

return Message;

}

}

// Улучшенный вариант класса RangeArray.

class RangeArray {

// Закрытые данные.

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

int lowerBound; // наименьший индекс

int upperBound; // наибольший индекс

// Автоматически реализуемое и доступное

// только для чтения свойство Length,

public int Length { get; private set; }

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

public RangeArray(int low, int high) {

high++;

if(high <= low) {

throw new RangeArrayException("Нижний индекс не меньше верхнего.");

}

a = new int[high - low];

Length = high - low;

lowerBound = low;

upperBound = --high;

}

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

public int this[int index] {

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

get {

if(ok(index)) {

return a[index - lowerBound];

} else {

throw new RangeArrayException("Ошибка нарушения границ.");

}

}

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

set {

if(ok(index)) {

a[index - lowerBound] = value;

}

else throw new RangeArrayException("Ошибка нарушения границ.");

}

}

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

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

private bool ok(int index) {

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

return false;

}

}

// Продемонстрировать применение массива с произвольно

// задаваемыми пределами индексирования,

class RangeArrayDemo {

static void Main() {

try {

RangeArray ra = new RangeArray(-5, 5);

RangeArray ra2 = new RangeArray(1, 10);

// Использовать объект га в качестве массива.

Console.WriteLine("Длина массива rа: "+ ra.Length);

for(int i = -5; i <= 5; i++) ra[i] = i;

Console.Write("Содержимое массива ra: ");

for (int i = -5; i <= 5; i++)

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

Console.WriteLine("\n");

// Использовать объект ra2 в качестве массива.

Console.WriteLine("Длина массива rа2: " + ra2.Length);

for (int i = 1; i <= 10; i++) ra2[i] = i;

Console.Write("Длина массива ra2: ");

for (int i = 1; i <= 10; i++)

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

Console.WriteLine("\n") ;

}

catch (RangeArrayException exc) {

Console.WriteLine(exc);

}

// А теперь продемонстрировать обработку некоторых ошибок.

Console.WriteLine("Сгенерировать ошибки нарушения границ.");

// Использовать неверно заданный конструктор,

try {

RangeArray ra3 = new RangeArray(100, -10); // Ошибка!

}

catch (RangeArrayException exc) {

Console.WriteLine(exc);

}

// Использовать неверно заданный индекс,

try {

RangeArray ra3 = new RangeArray(-2, 2);

for(int i = -2; i <= 2; i++) ra3[i] = i;

Console.Write("Содержимое массива ra3: ");

for (int i = -2; i <= 10; i++) // сгенерировать ошибку нарушения границ

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

}

catch (RangeArrayException exc) {

Console.WriteLine(exc);

}

}

}

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

Длина массива rа: 11

Содержимое массива ra: -5 -4 -3 -2 -1 0 1 2 3 4 5

Длина массива ra2: 10

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

Интервал:

Закладка:

Сделать


Герберт Шилдт читать все книги автора по порядку

Герберт Шилдт - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




C# 4.0: полное руководство отзывы


Отзывы читателей о книге C# 4.0: полное руководство, автор: Герберт Шилдт. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x