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

Герберт Шилдт

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

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

  • Полное описание средств языка C#
  • Подробное рассмотрение новых средств в версии C# 4.0, в том числе PLINQ, библиотеку TPL, именованные и необязательные аргументы, динамический тип данных и многое другое
  • Сотни простых и понятных примеров программ с комментариями.

Самый полный источник информации по C#. Благодаря поддержке параллельного языка интегрированных запросов (PLINQ) и библиотеки распараллеливания задач (TPL) версия 4.0 стала новой вехой в программировании на C#, и поэтому Герберт Шилдт, автор лучших книг по программированию, обновил и расширил свое классическое руководство, чтобы охватить в нем эти и другие нововведения. В книге подробно описываются языковые средства C#, даются профессиональные рекомендации и приводятся сотни примеров программ, охватывающих все аспекты программирования на C#, включая синтаксис, ключевые слова и основные библиотеки, не говоря уже о таких новшествах, как PLINQ, TPL, динамический тип данных, а также именованные и необязательные аргументы.

Это необходимое каждому программирующему на C# справочное руководство написано простым и доступным языком, благодаря которому Герберт Шилдт стал таким популярным. В книге найдут ответы на насущные вопросы по C# как начинающие, так и опытные программисты.

Издательство: Вильямс, 2011 г.

ISBN 978-5-8459-1684-6, 0-07-174116-X

Количество страниц: 1056.

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

  • 22 Об авторе
  • 22 О научном редакторе
  • 23 Благодарности
  • 25 Предисловие
    • 27 Структура книги
    • 27 Книга для всех программирующих
    • 27 Необходимое программное обеспечение
    • 27 Код, доступный в Интернете
    • 28 Что еще почитать
    • 28 От издательства
  • 29 ЧАСТЬ I. ЯЗЫК C#
  • 31 Глава 1. Создание C#
    • 32 Генеалогическое дерево C#
      • 32 Язык C — начало современной эпохи программирования
      • 33 Появление ООП и C++
      • 33 Появление Интернета и Java
      • 34 Создание C#
      • 36 Развитие C#
    • 37 Связь C# со средой .NET Framework
      • 37 О среде NET Framework
    • 38 Принцип действия CLR
    • 38 Управляемый и неуправляемый код
      • 39 Общеязыковая спецификация
  • 41 Глава 2. Краткий обзор элементов C#
    • 41 Объектно-ориентированное программирование
      • 42 Инкапсуляция
      • 43 Полиморфизм
      • 44 Наследование
      • 44 Первая простая программа
      • 45 Применение компилятора командной строки csc.exe
      • 46 Применение интегрированной среды разработки Visual Studio
      • 50 Построчный анализ первого примера программы
    • 53 Обработка синтаксических ошибок
    • 54 Незначительное изменение программы
    • 54 Вторая простая программа
    • 57 Другие типы данных
    • 58 Два управляющих оператора
      • 58 Условный оператор
      • 60 Оператор цикла
      • 61 Использование кодовых блоков
    • 63 Точка с запятой и оформление исходного текста программы
    • 64 Ключевые слова C#
    • 65 Идентификаторы
    • 66 Библиотека классов среды .NET Framework
  • 67 Глава 3. Типы данных, литералы и переменные
    • 67 О значении типов данных
    • 68 Типы значений в C#
    • 69 Целочисленные типы
    • 71 Типы для представления чисел с плавающей точкой
    • 73 Десятичный тип данных
    • 74 Символы
    • 75 Логический тип данных
    • 76 Некоторые возможности вывода
    • 79 Литералы
      • 80 Шестнадцатеричные литералы
      • 80 Управляющие последовательности символов
      • 81 Строковые литералы
    • 83 Более подробное рассмотрение переменных
      • 83 Инициализация переменной
      • 84 Динамическая инициализация
      • 85 Неявно типизированные переменные
    • 86 Область действия и время существования переменных
    • 89 Преобразование и приведение типов
      • 90 Автоматическое преобразование типов
      • 91 Приведение несовместимых типов
    • 93 Преобразование типов в выражениях
      • 95 Приведение типов в выражениях
  • 97 Глава 4. Операторы
    • 97 Арифметические операторы
      • 98 Операторы инкремента и декремента
    • 101 Операторы отношения и логические операторы
      • 104 Укороченные логические операторы
    • 106 Оператор присваивания
      • 107 Составные операторы присваивания
    • 107 Поразрядные операторы
      • 108 Поразрядные операторы И, ИЛИ, исключающее ИЛИ и НЕ
      • 114 Операторы сдвига
      • 117 Поразрядные составные операторы присваивания
    • 117 Оператор ?
    • 119 Использование пробелов и круглых скобок
    • 119 Предшествование операторов
  • 121 Глава 5. Управляющие операторы
    • 121 Оператор if
      • 122 Вложенные операторы if
      • 124 Конструкция if-else-if
    • 125 Оператор switch
      • 129 Вложенные операторы switch
    • 129 Оператор цикла for
      • 131 Некоторые разновидности оператора цикла for
    • 137 Оператор цикла while
    • 138 Оператор цикла do-while
    • 139 Оператор цикла foreach
    • 139 Применение оператора break для выхода из цикла
    • 142 Применение оператора continue
      • 143 Оператор return
    • 143 Оператор goto
  • 147 Глава 6. Введение в классы,объекты и методы
    • 147 Основные положения о классах
      • 148 Общая форма определения класса
      • 149 Определение класса
    • 153 Создание объектов
    • 154 Переменные ссылочного типа и присваивание
    • 155 Методы
      • 156 Добавление метода в класс Building
      • 158 Возврат из метода
      • 159 Возврат значения
      • 162 Использование параметров
      • 164 Добавление параметризированного метода в класс Building
      • 166 Исключение недоступного кода
    • 166 Конструкторы
      • 168 Параметризированные конструкторы
      • 169 Добавление конструктора в класс Building
    • 170 Еще раз об операторе new
      • 170 Применение оператора new вместе с типами значений
    • 171 «Сборка мусора» и применение деструкторов
      • 172 Деструкторы
      • 174 Ключевое слово this
  • 177 Глава 7. Массивы и строки
    • 177 Массивы
      • 178 Одномерные массивы
    • 182 Многомерные массивы
      • 182 Двумерные массивы
      • 183 Массивы трех и более измерений
      • 184 Инициализация многомерных массивов
    • 185 Ступенчатые массивы
    • 187 Присваивание ссылок на массивы
    • 189 Применение свойства Length
      • 191 Применение свойства Length при обращении со ступенчатыми массивами
    • 192 Неявно типизированные массивы
    • 194 Оператор цикла foreach
    • 198 Строки
      • 198 Построение строк
      • 199 Обращение со строками
      • 203 Массивы строк
      • 205 Постоянство строк
      • 206 Применение строк в операторах switch
  • 209 Глава 8. Подробнее о методах и классах
    • 209 Управление доступом к членам класса
      • 210 Модификаторы доступа
      • 212 Организация закрытого и открытого доступа
      • 212 Практический пример организации управления доступом
    • 218 Передача объектов методам по ссылке
      • 220 Способы передачи аргументов методу
    • 222 Использование модификаторов параметров ref и out
      • 223 Использование модификатора параметра ref
      • 224 Использование модификатора параметра out
      • 227 Использование модификаторов ref и out для ссылок на объекты
    • 229 Использование переменного числа аргументов
    • 231 Возврат объектов из методов
      • 234 Возврат массива из метода
    • 235 Перегрузка методов
    • 241 Перегрузка конструкторов
      • 245 Вызов перегружаемого конструктора с помощью ключевого слова this
    • 246 Инициализаторы объектов
    • 247 Необязательные аргументы
      • 249 Необязательные аргументы и перегрузка методов
      • 250 Необязательные аргументы и неоднозначность
      • 251 Практический пример использования необязательных аргументов
    • 252 Именованные аргументы
    • 254 Метод Main()
      • 254 Возврат значений из метода Main()
      • 255 Передача аргументов методу Main()
    • 257 Рекурсия
    • 260 Применение ключевого слова static
      • 265 Статические конструкторы
    • 266 Статические классы
  • 269 Глава 9. Перегрузка операторов
    • 270 Основы перегрузки операторов
      • 270 Перегрузка бинарных операторов
      • 273 Перегрузка унарных операторов
    • 277 Выполнение операций со встроенными в C# типами данных
    • 281 Перегрузка операторов отношения
    • 283 Перегрузка операторов true и false
    • 286 Перегрузка логических операторов
      • 286 Простой способ перегрузки логических операторов
      • 288 Как сделать укороченные логические операторы доступными для применения
    • 292 Операторы преобразования
    • 297 Рекомендации и ограничения по перегрузке операторов
    • 298 Еще один пример перегрузки операторов
  • 303 Глава 10. Индексаторы и свойства
    • 303 Индексаторы
      • 304 Создание одномерных индексаторов
      • 307 Перегрузка индексаторов
      • 310 Индексаторы без базового массива
      • 311 Многомерные индексаторы
    • 313 Свойства
      • 318 Автоматически реализуемые свойства
      • 319 Применение инициализаторов объектов в свойствах
      • 320 Ограничения, присущие свойствам
    • 320 Применение модификаторов доступа в аксессорах
    • 324 Применение индексаторов и свойств
  • 329 Глава 11. Наследование
    • 329 Основы наследования
    • 333 Доступ к членам класса и наследование
      • 336 Организация защищенного доступа
    • 337 Конструкторы и наследование
      • 339 Вызов конструкторов базового класса
    • 343 Наследование и сокрытие имен
      • 344 Применение ключевого слова base для доступа к скрытому имени
    • 346 Создание многоуровневой иерархии классов
    • 349 Порядок вызова конструкторов
    • 351 Ссылки на базовый класс и объекты производных классов
    • 355 Виртуальные методы и их переопределение
      • 359 Что дает переопределение методов
      • 360 Применение виртуальных методов
    • 363 Применение абстрактных классов
    • 367 Предотвращение наследования с помощью ключевого слова sealed
    • 368 Класс object
      • 370 Упаковка и распаковка
      • 372 Класс object как универсальный тип данных
  • 375 Глава 12. Интерфейсы, структуры и перечисления
    • 375 Интерфейсы
      • 377 Реализация интерфейсов
    • 381 Применение интерфейсных ссылок
    • 383 Интерфейсные свойства
    • 385 Интерфейсные индексаторы
    • 387 Наследование интерфейсов
    • 388 Сокрытие имен при наследовании интерфейсов
    • 388 Явные реализации
    • 391 Выбор между интерфейсом и абстрактным классом
    • 391 Стандартные интерфейсы для среды .NET Framework
    • 391 Структуры
      • 395 О назначении структур
    • 397 Перечисления
      • 399 Инициализация перечисления
      • 399 Указание базового типа перечисления
      • 399 Применение перечислений
  • 403 Глава 13. Обработка исключительных ситуаций
    • 404 Класс System.Exception
    • 404 Основы обработки исключительных ситуаций
      • 404 Применение пары ключевых слов try и catch
      • 405 Простой пример обработки исключительной ситуации
      • 407 Второй пример обработки исключительной ситуации
    • 408 Последствия неперехвата исключений
    • 410 Обработка исключительных ситуаций — «изящный» способ устранения программных ошибок
    • 411 Применение нескольких операторов catch
    • 412 Перехват всех исключений
    • 413 Вложение блоков try
    • 414 Генерирование исключений вручную
      • 415 Повторное генерирование исключений
    • 416 Использование блока fi nally
    • 418 Подробное рассмотрение класса Exception
      • 420 Наиболее часто используемые исключения
    • 422 Получение производных классов исключений
    • 426 Перехват исключений производных классов
    • 428 Применение ключевых слов checked и unchecked
  • 431 Глава 14. Применение средств ввода-вывода
    • 431 Организация системы ввода-вывода в C# на потоках
      • 432 Байтовые и символьные потоки
      • 432 Встроенные потоки
    • 432 Классы потоков
      • 432 Класс Stream
      • 434 Классы байтовых потоков
      • 434 Классы-оболочки символьных потоков
      • 436 Двоичные потоки
    • 436 Консольный ввод-вывод
      • 436 Чтение данных из потока ввода с консоли
      • 438 Применение метода ReadKey()
      • 440 Запись данных в поток вывода на консоль
    • 441 Класс FileStream и байтовый ввод-вывод в файл
      • 441 Открытие и закрытие файла
      • 444 Чтение байтов из потока файлового ввода-вывода
      • 446 Запись в файл
      • 448 Использование класса FileStream для копирования файла
    • 449 Символьный ввод-вывод в файл
      • 449 Применение класса StreamWriter
      • 451 Применение класса StreamReader
    • 452 Переадресация стандартных потоков
    • 454 Чтение и запись двоичных данных
      • 454 Класс BinaryWriter
      • 455 Класс BinaryReader
      • 457 Демонстрирование двоичного ввода-вывода
    • 461 Файлы с произвольным доступом
    • 463 Применение класса MemoryStream
    • 465 Применение классов StringReader и StringWriter
    • 467 Класс File
      • 467 Копирование файлов с помощью метода Copy()
      • 468 Применение методов Exists() и GetLastAccessTime()
    • 469 Преобразование числовых строк в их внутреннее представление
  • 473 Глава 15. Делегаты, события и лямбда-выражения
    • 473 Делегаты
      • 476 Групповое преобразование делегируемых методов
      • 477 Применение методов экземпляра в качестве делегатов
      • 478 Групповая адресация
      • 481 Ковариантность и контравариантность
      • 483 Класс System.Delegate
      • 483 Назначение делегатов
    • 483 Анонимные функции
    • 484 Анонимные методы
      • 484 Передача аргументов анонимному методу
      • 485 Возврат значения из анонимного метода
      • 486 Применение внешних переменных в анонимных методах
    • 488 Лямбда-выражения
      • 488 Лямбда-оператор
      • 489 Одиночные лямбда-выражения
      • 492 Блочные лямбда-выражения
    • 494 События
      • 496 Пример групповой адресации события
      • 497 Методы экземпляра в сравнении со статическими методами в качестве обработчиков событий
      • 500 Применение аксессоров событий
      • 504 Разнообразные возможности событий
    • 504 Применение анонимных методов и лямбда-выражений вместе с событиями
    • 506 Рекомендации по обработке событий в среде .NET Framework
      • 508 Применение делегатов EventHandler<TEventArgs> и EventHandler
    • 509 Практический пример обработки событий
  • 513 Глава 16. Пространства имен, препроцессор и сборки
    • 513 Пространства имен
      • 514 Объявление пространства имен
      • 516 Предотвращение конфликтов имен с помощью пространств имен
      • 518 Директива using
      • 520 Вторая форма директивы using
      • 521 Аддитивный характер пространств имен
      • 523 Вложенные пространства имен
      • 524 Глобальное пространство имен
      • 524 Применение описателя псевдонима пространства имен
    • 528 Препроцессор
      • 529 Директива #define
      • 529 Директивы #if и #endif
      • 531 Директивы #else и #elif
      • 533 Директива #undef
      • 533 Директива #error
      • 534 Директива #warning
      • 534 Директива #line
      • 534 Директивы #region и #endregion
      • 534 Директива #pragma
    • 535 Сборки и модификатор доступа internal
    • 536 Модификатор доступа internal
  • 537 Глава 17. Динамическая идентификация типов, рефлексия и атрибуты
    • 537 Динамическая идентификация типов
      • 538 Проверка типа с помощью оператора is
      • 539 Применение оператора as
      • 540 Применение оператора typeof
    • 541 Рефлексия
      • 541 Класс System.Type — ядро подсистемы рефлексии
    • 543 Применение рефлексии
      • 544 Получение сведений о методах
      • 548 Вызов методов с помощью рефлексии
      • 550 Получение конструкторов конкретного типа
      • 555 Получение типов данных из сборок
      • 560 Полностью автоматизированное обнаружение типов
    • 562 Атрибуты
      • 563 Основы применения атрибутов
      • 566 Сравнение позиционных и именованных параметров
    • 570 Встроенные атрибуты
      • 570 Атрибут AttributeUsage
      • 571 Атрибут Conditional
      • 572 Атрибут Obsolete
  • 575 Глава 18. Обобщения
    • 576 Что такое обобщения
    • 576 Простой пример обобщений
      • 580 Различение обобщенных типов по аргументам типа
      • 580 Повышение типовой безопасности с помощью обобщений
    • 583 Обобщенный класс с двумя параметрами типа
    • 585 Общая форма обобщенного класса
      • 585 Ограниченные типы
      • 586 Применение ограничения на базовый класс
      • 594 Применение ограничения на интерфейс
      • 598 Применение ограничения new() на конструктор
      • 599 Ограничения ссылочного типа и типа значения
      • 602 Установление связи между двумя параметрами типа с помощью ограничения
      • 603 Применение нескольких ограничений
    • 604 Получение значения, присваиваемого параметру типа по умолчанию
    • 606 Обобщенные структуры
    • 607 Создание обобщенного метода
      • 609 Вызов обобщенного метода с явно указанными аргументами типа
      • 610 Применение ограничений в обобщенных методах
    • 610 Обобщенные делегаты
    • 612 Обобщенные интерфейсы
    • 615 Сравнение экземпляров параметра типа
    • 620 Иерархии обобщенных классов
      • 620 Применение обобщенного базового класса
      • 622 Обобщенный производный класс
    • 623 Переопределение виртуальных методов в обобщенном классе
    • 625 Перегрузка методов с несколькими параметрами типа
    • 626 Ковариантность и контравариантность в параметрах обобщенного типа
      • 626 Применение ковариантности в обобщенном интерфейсе
      • 630 Применение контравариантности в обобщенном интерфейсе
      • 633 Вариантные делегаты
    • 635 Создание экземпляров объектов обобщенных типов
    • 636 Некоторые ограничения, присущие обобщениям
    • 636 Заключительные соображения относительно обобщений
  • 637 Глава 19. LINQ
    • 638 Основы LINQ
      • 639 Простой запрос
      • 641 Неоднократное выполнение запросов
      • 642 Связь между типами данных в запросе
      • 643 Общая форма запроса
    • 644 Отбор запрашиваемых значений с помощью оператора where
    • 646 Сортировка результатов запроса с помощью оператора orderby
    • 649 Подробное рассмотрение оператора select
    • 653 Применение вложенных операторов from
    • 655 Группирование результатов с помощью оператора group
    • 657 Продолжение запроса с помощью оператора into
    • 659 Применение оператора let для создания временной переменной в запросе
    • 660 Объединение двух последовательностей с помощью оператора join
    • 663 Анонимные типы
    • 666 Создание группового объединения
    • 669 Методы запроса
      • 669 Основные методы запроса
      • 670 Формирование запросов с помощью методов запроса
      • 673 Синтаксис запросов и методы запроса
      • 673 Дополнительные методы расширения, связанные с запросами
    • 675 Режимы выполнения запросов: отложенный и немедленный
    • 676 Деревья выражений
    • 678 Методы расширения
    • 680 PLINQ
  • 681 Глава 20. Небезопасный код, указатели, обнуляемые типы и разные ключевые слова
    • 681 Небезопасный код
      • 682 Основы применения указателей
      • 684 Применение ключевого слова unsafe
      • 685 Применение модификатора fi xed
      • 686 Доступ к членам структуры с помощью указателя
      • 686 Арифметические операции над указателями
      • 688 Сравнение указателей
      • 688 Указатели и массивы
      • 690 Указатели и строки
      • 691 Многоуровневая непрямая адресация
      • 692 Массивы указателей
      • 693 Создание буферов фиксированного размера
    • 695 Обнуляемые типы
      • 695 Основы применения обнуляемых типов
      • 697 Применение обнуляемых объектов в выражениях
      • 698 Оператор ??
      • 699 Обнуляемые объекты, операторы отношения и логические операторы
    • 700 Частичные типы
    • 701 Частичные методы
    • 703 Создание объектов динамического типа
    • 707 Возможность взаимодействия с моделью COM
    • 708 Дружественные сборки
    • 708 Разные ключевые слова
      • 708 Ключевое слов lock
      • 709 Ключевое слово readonly
      • 710 Ключевые слова const и volatile
      • 711 Оператор using
      • 712 Ключевое слово extern
  • 717 ЧАСТЬ II. БИБЛИОТЕКА C#
  • 719 Глава 21. Пространство имен System
    • 720 Члены пространства имен System
    • 721 Класс Math
    • 727 Структуры .NET, соответствующие встроенным типам значений
      • 728 Структуры целочисленных типов данных
      • 730 Структуры типов данных с плавающей точкой
      • 735 Структура Decimal
      • 741 Структура Char
      • 748 Структура Boolean
    • 750 Класс Array
      • 763 Сортировка и поиск в массивах
      • 766 Обращение содержимого массива
      • 767 Копирование массива
      • 768 Применение предиката
      • 769 Применение делегата Action
    • 771 Класс BitConverter
    • 773 Генерирование случайных чисел средствами класса Random
    • 774 Управление памятью и класс GC
    • 776 Класс object
    • 777 Класс Tuple
    • 778 Интерфейсы IComparable и IComparable<T>
    • 778 Интерфейс IEquatable<T>
    • 779 Интерфейс IConvertible
    • 779 Интерфейс ICloneable
    • 781 Интерфейсы IFormatProvider и IFormaa able
    • 781 Интерфейсы IObservable<T> и IObserver<T>
  • 783 Глава 22. Строки и форматирование
    • 783 Строки в C#
    • 784 Класс String
      • 784 Конструкторы класса String
      • 785 Поле, индексатор и свойство класса String
      • 786 Операторы класса String
      • 808 Заполнение и обрезка строк
      • 810 Вставка, удаление и замена строк
      • 811 Смена регистра
      • 811 Применение метода Substring()
      • 812 Методы расширения класса String
    • 812 Форматирование
      • 812 Общее представление о форматировании
      • 814 Спецификаторы формата числовых данных
      • 815 Представление о номерах аргументов
    • 816 Применение методов String.Format() и ToString() для форматирования данных
      • 816 Применение метода String.Format() для форматирования значений
      • 819 Применение метода ToString() для форматирования данных
    • 820 Определение пользовательского формата числовых данных
      • 820 Символы-заполнители специального формата числовых данных
    • 824 Форматирование даты и времени
      • 827 Определение пользовательского формата даты и времени
    • 829 Форматирование промежутков времени
    • 830 Форматирование перечислений
  • 833 Глава 23. Многопоточное программирование. Часть первая: основы
    • 834 Основы многопоточной обработки
    • 835 Класс Thread
      • 836 Создание и запуск потока
      • 838 Простые способы усовершенствования многопоточной программы
      • 839 Создание нескольких потоков
    • 841 Определение момента окончания потока
    • 844 Передача аргумента потоку
    • 846 Свойство IsBackground
    • 847 Приоритеты потоков
    • 849 Синхронизация
      • 853 Другой подход к синхронизации потоков
      • 855 Класс Monitor и блокировка
    • 855 Сообщение между потоками с помощью методов Wait(), Pulse() и PulseAll()
      • 856 Пример использования методов Wait() и Pulse()
    • 860 Взаимоблокировка и состояние гонки
    • 860 Применение атрибута MethodImplAttribute
    • 862 Применение мьютекса и семафора
      • 863 Мьютекс
      • 867 Семафор
    • 870 Применение событий
    • 873 Класс Interlocked
    • 874 Классы синхронизации, внедренные в версии .NET Framework 4.0
    • 875 Прерывание потока
      • 876 Другая форма метода Abort()
      • 878 Отмена действия метода Abort()
    • 880 Приостановка и возобновление потока
    • 880 Определение состояния потока
    • 880 Применение основного потока
    • 882 Дополнительные средства многопоточной обработки, внедренные в версии .NET Framework 4.0
    • 882 Рекомендации по многопоточному программированию
    • 882 Запуск отдельной задачи
  • 885 Глава 24. Многопоточное программирование. Часть вторая: библиотека TPL
    • 886 Два подхода к параллельному программированию
    • 887 Класс Task
      • 887 Создание задачи
      • 890 Применение идентификатора задачи
    • 891 Применение методов ожидания
      • 895 Вызов метода Dispose()
    • 895 Применение класса TaskFactory для запуска задачи
    • 896 Применение лямбда-выражения в качестве задачи
    • 897 Создание продолжения задачи
    • 899 Возврат значения из задачи
    • 901 Отмена задачи и обработка исключения AggregateException
    • 905 Другие средства организации задач
    • 906 Класс Parallel
      • 906 Распараллеливание задач методом Invoke()
      • 909 Применение метода For()
      • 915 Применение метода ForEach()
    • 917 Исследование возможностей PLINQ
      • 917 Класс ParallelEnumerable
      • 918 Распараллеливание запроса методом AsParallel()
      • 919 Применение метода AsOrdered()
      • 920 Отмена параллельного запроса
      • 922 Другие средства PLINQ
      • 922 Вопросы эффективности PLINQ
  • 923 Глава 25. Коллекции, перечислители и итераторы
    • 924 Краткий обзор коллекций
    • 925 Необобщенные коллекции
      • 926 Интерфейсы необобщенных коллекций
      • 931 Структура DictionaryEntry
      • 931 Классы необобщенных коллекций
    • 950 Хранение отдельных битов в классе коллекции BitArray
    • 953 Специальные коллекции
    • 954 Обобщенные коллекции
      • 954 Интерфейсы обобщенных коллекций
      • 960 Структура KeyValuePair<TKey, TValue>
      • 960 Классы обобщенных коллекций
    • 983 Параллельные коллекции
    • 988 Сохранение объектов, определяемых пользователем классов, в коллекции
    • 990 Реализация интерфейса IComparable
      • 990 Реализация интерфейса IComparable для необобщенных коллекций
      • 992 Реализация интерфейса IComparable для обобщенных коллекций
    • 994 Применение интерфейса IComparer
      • 994 Применение необобщенного интерфейса IComparer
      • 996 Применение обобщенного интерфейса IComparer<T>
    • 997 Применение класса StringComparer
    • 998 Доступ к коллекции с помощью перечислителя
      • 999 Применение обычного перечислителя
      • 1000 Применение перечислителя типа IDictionaryEnumerator
    • 1001 Реализация интерфейсов IEnumerable и IEnumerator
    • 1003 Применение итераторов
      • 1005 Прерывание итератора
      • 1006 Применение нескольких операторов yield
      • 1006 Создание именованного итератора
      • 1008 Создание обобщенного итератора
    • 1009 Инициализаторы коллекций
  • 1011 Глава 26. Сетевые средства подключения к Интернету
    • 1012 Члены пространства имен System.Net
    • 1013 Универсальные идентификаторы ресурсов
    • 1014 Основы организации доступа к Интернету
      • 1015 Класс WebRequest
      • 1017 Класс WebResponse
      • 1018 Классы HttpWebRequest и HttpWebResponse
      • 1018 Первый простой пример
    • 1021 Обработка сетевых ошибок
    • 1021 Исключения, генерируемые методом Create()
    • 1022 Исключения, генерируемые методом GetResponse()
    • 1022 Исключения, генерируемые методом GetResponseStream()
    • 1022 Обработка исключений
    • 1024 Класс Uri
    • 1025 Доступ к дополнительной информации, получаемой в ответ по протоколу HTTP
      • 1026 Доступ к заголовку
      • 1027 Доступ к cookie-наборам
      • 1029 Применение свойства LastModified
    • 1030 Практический пример создания программы MiniCrawler
    • 1034 Применение класса WebClient
  • 1039 Приложение. Краткий справочник по составлению документирующих комментариев
    • 1039 Дескрипторы XML-комментариев
    • 1041 Компилирование документирующих комментариев
    • 1041 Пример составления документации в формате XML
  • 1044 Предметный указатель

Инструкция как скачать книгу Герберт Шилдт: C# 4.0 полное руководство в форматах DjVu, PDF, DOC или fb2 совершенно бесплатно.
C# 4.0 полное руководство
Рейтинг книги:
3 голоса
1550

Поиск книг:




При поиске учитываются только слова, длина которых больше 3-х символов.

Статистика: