» » » Герберт Шилдт - 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#.Введите сюда краткую аннотацию






Используя класс RangeArray, можно написать следующий фрагмент кода.


RangeArray ra = new RangeArray(-5, 10); // массив с индексами от -5 до 10

for(int i=-5; i <= 10; i++) ra[i] = i; // индексирование массива от -5 до 10


Нетрудно догадаться, что в первой строке этого кода конструируется объект класса RangeArray с пределами индексирования массива от -5 до 10 включительно. Первый аргумент обозначает начальный индекс, а второй — конечный индекс. Как только объект ra будет сконструирован, он может быть проиндексирован как массив в пределах от -5 до 10.

Ниже приведен полностью класс RangeArray вместе с классом RangeArrayDemo, в котором демонстрируется индексирование массива в заданных пределах. Класс RangeArray реализован таким образом, чтобы поддерживать массивы типа int, но при желании вы можете изменить этот тип на любой другой.


/* Создать класс со специально указываемыми пределами индексирования массива. Класс RangeArray допускает индексирование массива с любого значения, а не только с нуля. При создании объекта класса RangeArray указываются начальный и конечный индексы. Допускается также указывать отрицательные индексы. Например, можно создать массивы, индексируемые от -5 до 5, от 1 до 10 или же от 50 до 56. */

using System;

class RangeArray {

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

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

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

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


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

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

  public int Length { get; private set; }


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

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

  public bool Error { get; private set; }


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

  public RangeArray(int low, int high) {

    high++;

    if (high <= low) {

      Console.WriteLine("Неверные индексы");

      high = 1; // создать для надежности минимально допустимый массив

      low = 0;

    }

    a = new int[high - low];

    Length = high - low;

    lowerBound = low;

    upperBound = --high;

  }


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

  public int this[int index] {

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

    get {

      if (ok(index)) {

        Error = false;

        return a[index - lowerBound];

      }

      else {

        Error = true;

        return 0;

      }

    }

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

    set {

      if (ok(index)) {

        a[index - lowerBound] = value;

        Error = false;

      }

      else

        Error = true;

    }

  }


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

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

  private bool ok(int index) {

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

    return false;

  }

}


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

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

class RangeArrayDemo {

  static void Main() {

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

    RangeArray ra2 = new RangeArray(1, 10);

    RangeArray ra3 = new RangeArray(-20, -12);


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

    Console.WriteLine("Длина массива ra: " + 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("Длина массива га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");


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

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

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


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

    for (int i = -20; i <= -12; i++)

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


    Console.WriteLine("\n");

  }

}


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


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

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


Длина массива rа2: 10

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


Длина массива rа3: 9

Содержимое массива ra3: -20 -19 -18 -17 -16 -15 -14 -13 -12


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

В начале класса RangeArray объявляются следующие закрытые переменные экземпляра.


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

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

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

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


Переменная а служит для обращения к базовому массиву по ссылке. Память для него распределяется конструктором класса RangeArray. Нижняя граница индексирования массива хранится в переменной lowerBound, а верхняя граница — в переменной upperBound.

Далее объявляются автоматически реализуемые свойства Length и Error.


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

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

public int Length { get; private set; }


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

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

public bool Error { get; private set; }


Обратите внимание на то, что в обоих свойства аксессор set обозначен как private. Как пояснялось выше, такое объявление автоматически реализуемого свойства, по существу, делает его доступным только для чтения.

Ниже приведен конструктор класса RangeArray.


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

public RangeArray(int low, int high) {

  high++;

  if(high <= low) {

    Console.WriteLine("Неверные индексы");

    high = 1; // создать для надежности минимально допустимый массив

    low = 0;

  }

  а = new int[high - low];

  Length = high - low;

  lowerBound = low;

  upperBound = --high;

}


При конструировании объекту класса RangeArray передается нижняя граница массива в качестве параметра low, а верхняя граница — в качестве параметра high. Затем значение параметра high инкрементируется, поскольку пределы индексирования массива изменяются от low до high включительно. Далее выполняется следующая проверка: является ли верхний индекс больше нижнего индекса. Если это не так, то выдается сообщение об ошибке и создается массив, состоящий из одного элемента. После этого для массива распределяется память, а ссылка на него присваивается переменной а. Затем свойство Length устанавливается равным числу элементов массива. И наконец, устанавливаются переменные lowerBound и upperBound.


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

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

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


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

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

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

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

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

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

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