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






      if (i == 10) yield break; // прервать итератор преждевременно

      yield return (char)(ch + i);

    }

  }

}


class ItrDemo3 {

  static void Main() {

    MyClass mc = new MyClass();


    foreach (char ch in mc)

      Console.Write(ch + " ");


    Console.WriteLine();

  }

}



Эта программа дает следующий результат.


A B C D E F G H I J


Применение нескольких операторов yield

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


// Пример применения нескольких операторов yield.

using System;

using System.Collections;


class MyClass {

  // Этот итератор возвращает буквы А, В, С, D и Е.

  public IEnumerator GetEnumerator() {

    yield return 'A';

    yield return 'B';

    yield return 'C';

    yield return 'D';

    yield return 'E';

  }

}


class ItrDemo5 {

  static void Main() {

    MyClass mc = new MyClass();

    foreach (char ch in mc)

      Console.Write(ch + " ");

    Console.WriteLine();

  }

}


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


А В С D Е


В данной программе внутри метода GetEnumerator() выполняются пять операторов yield. Следует особо подчеркнуть, что они выполняются по очереди и каждый раз, когда из коллекции получается очередной элемент. Таким образом, на каждом шаге цикла foreach в методе Main() возвращается только один символ.


Создание именованного итератора

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

объект типа IEnumerable. Именно этот объект используется в коде для предоставления итератора. Именованный итератор представляет собой метод, общая форма которого приведена ниже:


public IEnumerable имя_итератора (список_параметров) {

  // ...

  yield return obj;

}


где имя_итератора обозначает конкретное имя метода; список_параметров — от нуля до нескольких параметров, передаваемых методу итератора; obj — следующий объект, возвращаемый итератором. Как только именованный итератор будет создан, его можно использовать везде, где он требуется, например для управления циклом foreach.

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


// Использовать именованные итераторы.

using System;

using System.Collections;

class MyClass {

  char ch = 'A';

  // Этот итератор возвращает буквы английского алфавита,

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

  public IEnumerable MyItr(int end) {

    for (int i = 0; i < end; i++)

      yield return (char)(ch + i);

  }

  // Этот итератор возвращает буквы в заданных пределах

  public IEnumerable MyItr(int begin, int end) {

    for (int i = begin; i < end; i++)

      yield return (char)(ch + i);

  }

}


class ItrDemo4 {

  static void Main() {

    MyClass mc = new MyClass();

    Console.WriteLine("Возвратить по очереди первые 7 букв:");

    foreach (char ch in mc.MyItr(7))

      Console.Write(ch + " ");


    Console.WriteLine("\n");


    Console.WriteLine("Возвратить по очереди буквы от F до L:");

    foreach (char ch in mc.MyItr(5, 12))

      Console.Write(ch + " ");


    Console.WriteLine();

  }

}


Эта программа дает следующий результат.


Возвратить по очереди первые 7 букв:

А В С D Е F G


Возвратить по очереди буквы от F до L:

F G Н I J К L


Создание обобщенного итератора

В приведенных выше примерах применялись необобщенные итераторы, но, конечно, ничто не мешает создать обобщенные итераторы. Для этого достаточно возвратить объект обобщенного типа IEnumerator<T> или IEnumerable<T>. Ниже приведен пример создания обобщенного итератора.


// Простой пример обобщенного итератора,

using System;

using System.Collections.Generic;

class MyClass<T> {

  T[] array;


  public MyClass(T[] a) {

    array = a;

  }


  // Этот итератор возвращает символы из массива chrs.

  public IEnumerator<T> GetEnumerator() {

    foreach (T obj in array)

      yield return obj;

  }

}


class GenericItrDemo {

  static void Main() {

    int[] nums = { 4, 3, 6, 4, 7, 9 };

    MyClass<int> mc = new MyClass<int>(nums);


    foreach (int x in mc)

      Console.Write(x + " ");


    Console.WriteLine();


    bool[] bVals = { true, true, false, true };

    MyClass<bool> mc2 = new MyClass<bool>(bVals);

    foreach (bool b in mc2)

      Console.Write(b + " ");


    Console.WriteLine();

  }

}


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


4 3 6 4 7 9

True True False True


В данном примере массив, состоящий из возвращаемых по очереди объектов, передается конструктору класса MyClass. Тип этого массива указывает в качестве аргумента типа в конструкторе класса MyClass.

Метод GetEnumerator() оперирует данными обобщенного типа Т и возвращает перечислитель типа IEnumerator<T>. Следовательно, итератор, определенный в классе MyClass, способен перечислять данные любого типа.


Инициализаторы коллекций

В С# имеется специальное средство, называемое инициализатором коллекции и упрощающее инициализацию некоторых коллекций. Вместо того чтобы явно вызывать метод Add(), при создании коллекции можно указать список инициализаторов. После этого компилятор организует автоматические вызовы метода Add(), используя значения из этого списка. Синтаксис в данном случае ничем не отличается от инициализации массива. Обратимся к следующему примеру, в котором создается коллекция типа List<char>, инициализируемая символами С, А, Е, В, D и F.


List<char> lst = new List<char>() { 'С', 'А', 'Е', 'В', 'D', 'F' };


После выполнения этого оператора значение свойства lst.Count будет равно 6, поскольку именно таково число инициализаторов. А после выполнения следующего цикла foreach:


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

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

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


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

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

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

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

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

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

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