← Назад к списку книг

C# 4.0. Полное руководство (2011) [PDF]

Герберт Шилдт
Без рейтинга
Серия
Программирование (книга #241)
Издатель
Дата публикации
08.02.2014 17:29
Добавлена в библиотеку
18.09.2025 18:41
Последнее изменение
30.11.-0001 00:00
Форматы
PDF (10147 KB)
Путь в библиотеке
Gierbiert Shildt/C# 4.0. Polnoie rukovodstvo (2011) (10975)
UUID
e32be0e3-e6eb-4768-b486-0f32ef25c00f

Аннотация

Герберт Шилдт | C# 4.0. Полное руководство (2011) [PDF]

picАвтор: Герберт Шилдт

Название: C# 4.0. Полное руководство

Издательство: "Вильямс"

ISBN: 978-5-8459-1684-6

Отрасль (жанр): Программирование

Формат: PDF

Качество: E-book

Иллюстрации: Цветные и черно-белые

Страниц: 1056

 

Описание:

В этом полном руководстве по 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# как начинающие, так и опытные программисты.

[свернуть]

Дополнительная информация:

Содержание книги:

Об авторе

О научном редакторе

 

Благодарности

 

Предисловие

Структура книги

Книга для всех программирующих

Необходимое программное обеспечение

Код, доступный в Интернете

Что еще почитать

От издательства

 

ЧАСТЬ I. ЯЗЫК C#

 

Глава 1. Создание C#

Генеалогическое дерево C#

Язык С — начало современной эпохи программирования

Появление ООП и C++

Появление Интернета и Java

Создание C#

Развитие C#

Связь С# со средой .NET Framework

О среде NET Framework 37

Принцип действия CLR

Управляемый и неуправляемый код

Общеязыковая спецификация

 

Глава 2. Краткий обзор элементов C#

Объектно-ориентированное программирование

Инкапсуляция

Полиморфизм

Наследование

Первая простая программа

Применение компилятора командной строки csc.exe

Применение интегрированной среды разработки Visual Studio

Построчный анализ первого примера программы

Обработка синтаксических ошибок

Незначительное изменение программы

Вторая простая программа

Другие типы данных

Два управляющих оператора

Условный оператор

Оператор цикла

Использование кодовых блоков

Точка с запятой и оформление исходного текста программы

Ключевые слова C#

Идентификаторы

Библиотека классов среды .NET Framework

 

Глава 3. Типы данных, литералы и переменные

О значении типов данных

Типы значений в C#

Целочисленные типы

Типы для представления чисел с плавающей точкой

Десятичный тип данных

Символы

Логический тип данных

Некоторые возможности вывода

Литералы

Шестнадцатеричные литералы

Управляющие последовательности символов

Строковые литералы

Более подробное рассмотрение переменных

Инициализация переменной

Динамическая инициализация

Неявно типизированные переменные

Область действия и время существования переменных

Преобразование и приведение типов

Автоматическое преобразование типов

Приведение несовместимых типов

Преобразование типов в выражениях

Приведение типов в выражениях

 

Глава 4. Операторы

Арифметические операторы

Операторы инкремента и декремента

Операторы отношения и логические операторы

Укороченные логические операторы

Оператор присваивания

Составные операторы присваивания

Поразрядные операторы

Поразрядные операторы И, ИЛИ, исключающее ИЛИ и НЕ

Операторы сдвига

Поразрядные составные операторы присваивания

Оператор ?

Использование пробелов и круглых скобок

Предшествование операторов

 

Глава 5. Управляющие операторы

Оператор if

Вложенные операторы if

Конструкция if-else-if -

Оператор switch

Вложенные операторы switch

Оператор цикла for

Некоторые разновидности оператора цикла for

Оператор цикла while

Оператор цикла do-while

Оператор цикла foreach

Применение оператора break для выхода из цикла

Применение оператора continue

Оператор return

Оператор goto

 

Глава 6. Введение в классы, объекты и методы

Основные положения о классах

Общая форма определения класса

Определение класса

Создание объектов

Переменные ссылочного типа и присваивание

Методы

Добавление метода в класс Building

Возврат из метода

Возврат значения

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

Добавление параметризированного метода в класс Building

Исключение недоступного кода

Конструкторы

Параметризированные конструкторы

Добавление конструктора в класс Building

Еще раз об операторе new

Применение оператора new вместе с типами значений

"Сборка мусора" и применение деструкторов

Деструкторы

Ключевое слово this

 

Глава 7. Массивы и строки

Массивы

Одномерные массивы

Многомерные массивы

Двумерные массивы

Массивы трех и более измерений

Инициализация многомерных массивов

Ступенчатые массивы

Присваивание ссылок на массивы

Применение свойства Length

Применение свойства Length при обращении со ступенчатыми массивами

Неявно типизированные массивы

Оператор цикла foreach

Строки

Построение строк

Обращение со строками

Массивы строк

Постоянство строк

Применение строк в операторах switch

 

Глава 8. Подробнее о методах и классах

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

Модификаторы доступа

Организация закрытого и открытого доступа

Практический пример организации управления доступом

Передача объектов методам по ссылке

Способы передачи аргументов методу

Использование модификаторов параметров ref и out

Использование модификатора параметра ref

Использование модификатора параметра out

Использование модификаторов ref и out для ссылок на объекты

Использование переменного числа аргументов

Возврат объектов из методов

Возврат массива из метода

Перегрузка методов

Перегрузка конструкторов

Вызов перегружаемого конструктора с помощью ключевого слова this

Инициализаторы объектов

Необязательные аргументы

Необязательные аргументы и перегрузка методов

Необязательные аргументы и неоднозначность

Практический пример использования необязательных аргументов

Именованные аргументы

Метод Main()

Возврат значений из метода Main()

Передача аргументов методу Main()

Рекурсия

Применение ключевого слова static

Статические конструкторы

Статические классы

 

Глава 9. Перегрузка операторов

Основы перегрузки операторов

Перегрузка бинарных операторов

Перегрузка унарных операторов

Выполнение операций со встроенными в C# типами данных

Перегрузка операторов отношения

Перегрузка операторов true и false

Перегрузка логических операторов

Простой способ перегрузки логических операторов

Как сделать укороченные логические операторы доступными для применения

Операторы преобразования

Рекомендации и ограничения по перегрузке операторов

Еще один пример перегрузки операторов

 

Глава 10. Индексаторы и свойства

Индексаторы

Создание одномерных индексаторов

Перегрузка индексаторов

Индексаторы без базового массива

Многомерные индексаторы

Свойства

Автоматически реализуемые свойства

Применение инициализаторов объектов в свойствах

Ограничения, присущие свойствам

Применение модификаторов доступа в аксессорах

Применение индексаторов и свойств

 

Глава 11. Наследование

Основы наследования

Доступ к членам класса и наследование

Организация защищенного доступа

Конструкторы и наследование

Вызов конструкторов базового класса

Наследование и сокрытие имен

Применение ключевого слова base для доступа к скрытому имени

Создание многоуровневой иерархии классов

Порядок вызова конструкторов

Ссылки на базовый класс и объекты производных классов

Виртуальные методы и их переопределение

Что дает переопределение методов

Применение виртуальных методов

Применение абстрактных классов

Предотвращение наследования с помощью ключевого слова sealed

Класс object

Упаковка и распаковка

Класс object как универсальный тип данных

 

Глава 12. Интерфейсы, структуры и перечисления

Интерфейсы

Реализация интерфейсов

Применение интерфейсных ссылок

Интерфейсные свойства

Интерфейсные индексаторы

Наследование интерфейсов

Сокрытие имен при наследовании интерфейсов

Явные реализации

Выбор между интерфейсом и абстрактным классом

Стандартные интерфейсы для среды .NET Framework

Структуры

О назначении структур

Перечисления

Инициализация перечисления

Указание базового типа перечисления

Применение перечислений

 

Глава 13. Обработка исключительных ситуаций

Класс System.Exception

Основы обработки исключительных ситуаций

Применение пары ключевых слов try и catch

Простой пример обработки исключительной ситуации

Второй пример обработки исключительной ситуации

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

Обработка исключительных ситуаций — "изящный" способ устранения программных ошибок

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

Перехват всех исключений

Вложение блоков try

Генерирование исключений вручную

Повторное генерирование исключений

Использование блока finally

Подробное рассмотрение класса Exception

Наиболее часто используемые исключения

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

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

Применение ключевых слов checked и unchecked

 

Глава 14. Применение средств ввода-вывода

Организация системы ввода-вывода в C# на потоках

Байтовые и символьные потоки

Встроенные потоки

Классы потоков

Класс Stream

Классы байтовых потоков

Классы-оболочки символьных потоков

Двоичные потоки

Консольный ввод-вывод

Чтение данных из потока ввода с консоли

Применение метода ReadKey()

Запись данных в поток вывода на консоль

Класс FileStream и байтовый ввод-вывод в файл

Открытие и закрытие файла

Чтение байтов из потока файлового ввода-вывода

Запись в файл

Использование класса FileStream для копирования файла

Символьный ввод-вывод в файл

Применение класса StreamWriter

Применение класса StreamReader

Переадресация стандартных потоков

Чтение и запись двоичных данных

Класс BinaryWriter

Класс BinaryReader

Демонстрирование двоичного ввода-вывода

Файлы с произвольным доступом

Применение класса MemoryStream

Применение классов StringReader и StringWriter

Класс File

Копирование файлов с помощью метода Сору()

Применение методов Exists() и GetLastAccessTime()

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

 

Глава 15. Делегаты, события и лямбда-выражения

Делегаты

Групповое преобразование делегируемых методов

Применение методов экземпляра в качестве делегатов

Групповая адресация

Ковариантность и контравариантность

Класс System.Delegate

Назначение делегатов

Анонимные функции

Анонимные методы

Передача аргументов анонимному методу

Возврат значения из анонимного метода

Применение внешних переменных в анонимных методах

Лямбда-выражения

Лямбда-оператор

Одиночные лямбда-выражения

Блочные лямбда-выражения

События

Пример групповой адресации события

Методы экземпляра в сравнении со статическими методами в качестве обработчиков событий

Применение аксессоров событий

Разнообразные возможности событий

Применение анонимных методов и лямбда-выражений вместе с событиями

Рекомендации по обработке событий в среде .NET Framework

Применение делегатов EventHandler<TEventArgs> и EventHandler

Практический пример обработки событий

 

Глава 16. Пространства имен, препроцессор и сборки

Пространства имен

Объявление пространства имен

Предотвращение конфликтов имен с помощью пространств имен

Директива using

Вторая форма директивы using

Аддитивный характер пространств имен

Вложенные пространства имен

Глобальное пространство имен

Применение описателя псевдонима пространства имен ::

Препроцессор

Директива #define

Директивы #if и #endif

Директивы #else и #elif

Директива #undef

Директива #error

Директива #warning

Директива #line

Директивы #region и #endregion

Директива #pragma

Сборки и модификатор доступа internal

Модификатор доступа internal

 

Глава 17. Динамическая идентификация типов, рефлексия и атрибуты

Динамическая идентификация типов

Проверка типа с помощью оператора is

Применение оператора as

Применение оператора typeof

Рефлексия

Класс System.Type — ядро подсистемы рефлексии

Применение рефлексии

Получение сведений о методах

Вызов методов с помощью рефлексии

Получение конструкторов конкретного типа

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

Полностью автоматизированное обнаружение типов

Атрибуты

Основы применения атрибутов

Сравнение позиционных и именованных параметров

Встроенные атрибуты

Атрибут AttributeUsage

Атрибут Conditional

Атрибут Obsolete

 

Глава 18. Обобщения

Что такое обобщения

Простой пример обобщений

Различение обобщенных типов по аргументам типа

Повышение типовой безопасности с помощью обобщений

Обобщенный класс с двумя параметрами типа

Общая форма обобщенного класса

Ограниченные типы

Применение ограничения на базовый класс

Применение ограничения на интерфейс

Применение ограничения new() на конструктор

Ограничения ссылочного типа и типа значения

Установление связи между двумя параметрами типа с помощью ограничения

Применение нескольких ограничений

Получение значения, присваиваемого параметру типа по умолчанию

Обобщенные структуры

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

Вызов обобщенного метода с явно указанными аргументами типа

Применение ограничений в обобщенных методах

Обобщенные делегаты

Обобщенные интерфейсы

Сравнение экземпляров параметра типа

Иерархии обобщенных классов

Применение обобщенного базового класса

Обобщенный производный класс

Переопределение виртуальных методов в обобщенном классе

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

Ковариантность и контравариантность в параметрах обобщенного типа

Применение ковариантности в обобщенном интерфейсе

Применение контравариантности в обобщенном интерфейсе

Вариантные делегаты

Создание экземпляров объектов обобщенных типов

Некоторые ограничения, присущие обобщениям

Заключительные соображения относительно обобщений

 

Глава 19. LINQ

Основы LINQ

Простой запрос

Неоднократное выполнение запросов

Связь между типами данных в запросе

Общая форма запроса

Отбор запрашиваемых значений с помощью оператора where

Сортировка результатов запроса с помощью оператора orderby

Подробное рассмотрение оператора select

Применение вложенных операторов from

Группирование результатов с помощью оператора group

Продолжение запроса с помощью оператора into

Применение оператора let для создания временной переменной в запросе

Объединение двух последовательностей с помощью оператора join

Анонимные типы

Создание группового объединения

Методы запроса

Основные методы запроса

Формирование запросов с помощью методов запроса

Синтаксис запросов и методы запроса

Дополнительные методы расширения, связанные с запросами

Режимы выполнения запросов: отложенный и немедленный

Деревья выражений

Методы расширения

PLINQ

 

Глава 20. Небезопасный код, указатели, обнуляемые типы и разные ключевые слова

Небезопасный код

Основы применения указателей

Применение ключевого слова unsafe

Применение модификатора fixed

Доступ к членам структуры с помощью указателя

Арифметические операции над указателями

Сравнение указателей

Указатели и массивы

Указатели и строки

Многоуровневая непрямая адресация

Массивы указателей

Создание буферов фиксированного размера

Обнуляемые типы

Основы применения обнуляемых типов

Применение обнуляемых объектов в выражениях

Оператор ??

Обнуляемые объекты, операторы отношения и логические операторы

Частичные типы

Частичные методы

Создание объектов динамического типа

Возможность взаимодействия с моделью СОМ

Дружественные сборки

Разные ключевые слова

Ключевое слов lock

Ключевое слово readonly

Ключевые слова const и volatile

Оператор using

Ключевое слово extern

 

ЧАСТЬ II. БИБЛИОТЕКА C#

 

Глава 21. Пространство имен System

Члены пространства имен System

Класс Math

Структуры .NET, соответствующие встроенным типам значений

Структуры целочисленных типов данных

Структуры типов данных с плавающей точкой

Структура Decimal

Структура Char

Структура Boolean

Класс Array

Сортировка и поиск в массивах

Обращение содержимого массива

Копирование массива

Применение предиката

Применение делегата Action

Класс BitConverter

Генерирование случайных чисел средствами класса Random

Управление памятью и класс GC

Класс object

Класс Tuple

Интерфейсы IComparable и IComparable<T>

Интерфейс IEquatable<T>

Интерфейс IConvertible

Интерфейс ICloneable

Интерфейсы IFormatProvider и IFormattable

Интерфейсы IObservable<T> и IObserver<T>

 

Глава 22. Строки и форматирование

Строки в C#

Класс String

Конструкторы класса String

Поле, индексатор и свойство класса String

Операторы класса String

Заполнение и обрезка строк

Вставка, удаление и замена строк

Смена регистра

Применение метода Substring()

Методы расширения класса String

Форматирование

Общее представление о форматировании

Спецификаторы формата числовых данных

Представление о номерах аргументов

Применение методов String.Format() и ToString() для форматирования данных

Применение метода String.Format() для форматирования значений

Применение метода ToString() для форматирования данных

Определение пользовательского формата числовых данных

Символы-заполнители специального формата числовых данных

Форматирование даты и времени

Определение пользовательского формата даты и времени

Форматирование промежутков времени

Форматирование перечислений

 

Глава 23. Многопоточное программирование. Часть первая: основы

Основы многопоточной обработки

Класс Thread

Создание и запуск потока

Простые способы усовершенствования многопоточной программы

Создание нескольких потоков

Определение момента окончания потока

Передача аргумента потоку

Свойство IsBackground

Приоритеты потоков

Синхронизация

Другой подход к синхронизации потоков

Класс Monitor и блокировка

Сообщение между потоками с помощью методов Wait(), Pulse() и PulseAll()

Пример использования методов Wait() и Pulse()

Взаимоблокировка и состояние гонки

Применение атрибута MethodImplAttribute

Применение мьютекса и семафора

Мьютекс

Семафор

Применение событий

Класс Interlocked

Классы синхронизации, внедренные в версии .NET Framework 4.0

Прерывание потока

Другая форма метода Abort()

Отмена действия метода Abort()

Приостановка и возобновление потока

Определение состояния потока

Применение основного потока

Дополнительные средства многопоточной обработки,

внедренные в версии .NET Framework 4.0

Рекомендации по многопоточному программированию

Запуск отдельной задачи

 

Глава 24. Многопоточное программирование. Часть вторая: библиотека TPL

Два подхода к параллельному программированию

Класс Task

Создание задачи

Применение идентификатора задачи

Применение методов ожидания

Вызов метода Dispose()

Применение класса TaskFactory для запуска задачи

Применение лямбда-выражения в качестве задачи

Создание продолжения задачи

Возврат значения из задачи

Отмена задачи и обработка исключения AggregateException

Другие средства организации задач

Класс Parallel

Распараллеливание задач методом Invoke()

Применение метода For()

Применение метода ForEach()

Исследование возможностей PLINQ

Класс ParallelEnumerable

Распараллеливание запроса методом AsParallel()

Применение метода AsOrdered()

Отмена параллельного запроса

Другие средства PLINQ

Вопросы эффективности PLINQ

 

Глава 25. Коллекции, перечислители и итераторы

Краткий обзор коллекций

Необобщенные коллекции

Интерфейсы необобщенных коллекций

Структура DictionaryEntry

Классы необобщенных коллекций

Хранение отдельных битов в классе коллекции BitArray

Специальные коллекции

Обобщенные коллекции

Интерфейсы обобщенных коллекций

Структура KeyValuePair<TKey, TValue>

Классы обобщенных коллекций

Параллельные коллекции

Сохранение объектов, определяемых пользователем классов, в коллекции

Реализация интерфейса IComparable

Реализация интерфейса IComparable для необобщенных коллекций

Реализация интерфейса IComparable для обобщенных коллекций

Применение интерфейса IComparer

Применение необобщенного интерфейса IComparer

Применение обобщенного интерфейса IComparer<T>

Применение класса StringComparer

Доступ к коллекции с помощью перечислителя

Применение обычного перечислителя

Применение перечислителя типа IDictionaryEnumerator

Реализация интерфейсов IEnumerable и IEnumerator

Применение итераторов

Прерывание итератора

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

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

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

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

 

Глава 26. Сетевые средства подключения к Интернету

Члены пространства имен System.Net

Универсальные идентификаторы ресурсов

Основы организации доступа к Интернету

Класс WebRequest

Класс WebResponse

Классы HttpWebRequest и HttpWebResponse

Первый простой пример

Обработка сетевых ошибок

Исключения, генерируемые методом Create()

Исключения, генерируемые методом GetResponse()

Исключения, генерируемые методом GetResponseStream()

Обработка исключений

Класс Uri

Доступ к дополнительной информации, получаемой в ответ по протоколу HTTP

Доступ к заголовку

Доступ к cookie-наборам

Применение свойства LastModified

Практический пример создания программы MiniCrawler

Применение класса WebClient

 

Приложение. Краткий справочник по составлению документирующих комментариев

Дескрипторы XML-комментариев

Компилирование документирующих комментариев

Пример составления документации в формате XML

 

Предметный указатель

[свернуть]

Особенности релиза:

1. Хорошее издание, с закладочной навигацией в боковой панели;

2. Книга переработана в электронную, исходный размер DjVu - 7,66 МБ, реставрация обложек, выравнивание размеров страниц;

3. Текст хорошо распознан, возможно копирование в буфер (см.скрин2) и поиск по всему тексту (скрин3);

4. Максимальное увеличение страницы, сохраняет чистоту текста, ровность букв.

* возврат через закладку - Содержание;

* Скриншоты сняты с разрешением - 94,9%;

 

http://nnm-club.me/forum/viewtopic.php?t=755434