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 Общеязыковая спецификация
- 32 Генеалогическое дерево C#
- 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
- 41 Объектно-ориентированное программирование
- 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 Предшествование операторов
- 97 Арифметические операторы
- 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
- 121 Оператор if
- 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
- 147 Основные положения о классах
- 177 Глава 7. Массивы и строки
- 177 Массивы
- 178 Одномерные массивы
- 182 Многомерные массивы
- 182 Двумерные массивы
- 183 Массивы трех и более измерений
- 184 Инициализация многомерных массивов
- 185 Ступенчатые массивы
- 187 Присваивание ссылок на массивы
- 189 Применение свойства Length
- 191 Применение свойства Length при обращении со ступенчатыми массивами
- 192 Неявно типизированные массивы
- 194 Оператор цикла foreach
- 198 Строки
- 198 Построение строк
- 199 Обращение со строками
- 203 Массивы строк
- 205 Постоянство строк
- 206 Применение строк в операторах switch
- 177 Массивы
- 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 Статические классы
- 209 Управление доступом к членам класса
- 269 Глава 9. Перегрузка операторов
- 270 Основы перегрузки операторов
- 270 Перегрузка бинарных операторов
- 273 Перегрузка унарных операторов
- 277 Выполнение операций со встроенными в C# типами данных
- 281 Перегрузка операторов отношения
- 283 Перегрузка операторов true и false
- 286 Перегрузка логических операторов
- 286 Простой способ перегрузки логических операторов
- 288 Как сделать укороченные логические операторы доступными для применения
- 292 Операторы преобразования
- 297 Рекомендации и ограничения по перегрузке операторов
- 298 Еще один пример перегрузки операторов
- 270 Основы перегрузки операторов
- 303 Глава 10. Индексаторы и свойства
- 303 Индексаторы
- 304 Создание одномерных индексаторов
- 307 Перегрузка индексаторов
- 310 Индексаторы без базового массива
- 311 Многомерные индексаторы
- 313 Свойства
- 318 Автоматически реализуемые свойства
- 319 Применение инициализаторов объектов в свойствах
- 320 Ограничения, присущие свойствам
- 320 Применение модификаторов доступа в аксессорах
- 324 Применение индексаторов и свойств
- 303 Индексаторы
- 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 Применение перечислений
- 375 Интерфейсы
- 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 Преобразование числовых строк в их внутреннее представление
- 431 Организация системы ввода-вывода в C# на потоках
- 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 Практический пример обработки событий
- 473 Делегаты
- 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
- 513 Пространства имен
- 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
- 537 Динамическая идентификация типов
- 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
- 638 Основы LINQ
- 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
- 681 Небезопасный код
- 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 совершенно бесплатно.