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


Авторские права

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

Здесь можно скачать бесплатно "Герберт Шилдт - C# 4.0: полное руководство" в формате fb2, epub, txt, doc, pdf. Жанр: Программирование, издательство ООО "И.Д. Вильямс", год 2011. Так же Вы можете читать книгу онлайн без регистрации и SMS на сайте LibFox.Ru (ЛибФокс) или прочесть описание и ознакомиться с отзывами.
Герберт Шилдт - C# 4.0: полное руководство
Рейтинг:
Название:
C# 4.0: полное руководство
Издательство:
ООО "И.Д. Вильямс"
Год:
2011
ISBN:
978-5-8459-1684-6
Скачать:

99Пожалуйста дождитесь своей очереди, идёт подготовка вашей ссылки для скачивания...

Скачивание начинается... Если скачивание не началось автоматически, пожалуйста нажмите на эту ссылку.

Вы автор?
Жалоба
Все книги на сайте размещаются его пользователями. Приносим свои глубочайшие извинения, если Ваша книга была опубликована без Вашего на то согласия.
Напишите нам, и мы в срочном порядке примем меры.

Как получить книгу?
Оплатили, но не знаете что делать дальше? Инструкция.

Описание книги "C# 4.0: полное руководство"

Описание и краткое содержание "C# 4.0: полное руководство" читать бесплатно онлайн.



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


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






  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

Содержимое массива ra2: 1 2 3 4 5 6 7 8 9 10


Сгенерировать ошибки нарушения границ.

Нижний индекс не меньше верхнего.

Содержимое массива raЗ: -2 -1 0 1 2 Ошибка нарушения границ.


Когда возникает ошибка нарушения границ массива класса RangeArray, генерируется объект типа RangeArrayException. В классе RangeArray это может произойти в трех следующих местах: в аксессоре get индексатора, в аксессоре set индексатора и в конструкторе класса RangeArray. Для перехвата этих исключений подразумевается, что объекты типа RangeArray должны быть сконструированы и доступны из блока try, что и продемонстрировано в приведенной выше программе. Используя специальное исключение для сообщения об ошибках, класс RangeArray теперь действует как один из встроенных в C# типов данных, и поэтому он может быть полностью интегрирован в механизм обработки ошибок, обнаруживаемых в программе.

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

Прежде чем переходить к дальнейшему чтению, попробуйте немного поэкспериментировать с приведенной выше программой. В частности, попробуйте закомментировать переопределение метода ToString() и понаблюдайте за результатами. Кроме того, попытайтесь создать исключение, используя конструктор, вызываемый по умолчанию, и посмотрите, какое сообщение при этом сформируется стандартными средствами С#.


Перехват исключений производных классов

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

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

В приведенном ниже примере программы создаются два класса исключений: ExceptA и ExceptB. Класс ExceptA является производным от класса Exception, а класс ExceptB — производным от класса ExceptA. Затем в программе генерируются исключения каждого типа. Ради краткости в классах специальных исключений предоставляется только один конструктор, принимающий символьную строку, описывающую исключение. Но при разработке программ коммерческого назначения в классах специальных исключений обычно требуется предоставлять все четыре конструктора, определяемых в классе Exception.


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


На Facebook В Твиттере В Instagram В Одноклассниках Мы Вконтакте
Подписывайтесь на наши страницы в социальных сетях.
Будьте в курсе последних книжных новинок, комментируйте, обсуждайте. Мы ждём Вас!

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

Книги похожие на "C# 4.0: полное руководство" читать онлайн или скачать бесплатно полные версии.


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

Все книги автора Герберт Шилдт

Герберт Шилдт - все книги автора в одном месте на сайте онлайн библиотеки LibFox.

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

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

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

  1. BOT20.02.2021, 13:02
    сКОРО КУПЛЮ
А что Вы думаете о книге? Оставьте Ваш отзыв.