C# 3.0. Справочник - Книга представляет собой подробный справочник по программированию на языке C# 3.0, реализованном в Microsoft Visual Studio 2008. Первые главы целиком посвящены языку C#, начиная с основ синтаксиса, типов и переменных и заканчивая более сложными темами, такими как небезопасный код или препроцессорные директивы. В последующих главах рассмотрено ядро .NET 3.5 Framework, LINQ, XML, коллекции, ввод/вывод и работа в сети, управление памятью, рефлексия, атрибуты, безопасность, домены приложений и взаимодействие с небезопасным кодом. В отличие от предыдущих изданий, материал книги наряду с теоретическими основами сопровождается наглядными практическими примерами, что позволяет сочетать глубину изложения с легкостью понимания.
Название: C# 3.0. Справочник Автор: Албахари Джозеф, Албахари Бен Издательство: БХВ-Петербург Год: 2009 Страниц: 944 Формат: PDF Размер: 8,37 МБ ISBN: 978-5-9775-0245-0 Качество: Отличное Язык: Русский
Содержание:
Об авторах Предисловие Целевая аудитория Как организована эта книга Что необходимо для чтения этой книги Соглашения, использованные в книге Использование фрагментов кода Благодарности Глава 1. Введение в C# и .NET Framework Объектная ориентированность Безопасность типов Управление памятью Работа на разных платформах Язык C# и среда CLR Среда CLR и платформа .NET Framework Что нового в C# Глава 2. Основы языка C# Первая программа на C# Компиляция Синтаксис Идентификаторы и ключевые слова Литералы, пунктуаторы и знаки операций Комментарии Основные сведения о типах Примеры стандартных типов Примеры пользовательских типов Преобразование типов Типы значений и ссылочные типы Таксономия стандартных типов Числовые типы Числовые литералы Числовые преобразования Арифметические операции Операции инкремента и декремента Специальные операции над целыми числами Восьми- и шестнадцатибитовые целые Специальные значения типов float и double Типы double и decimal Ошибки округления вещественных чисел Тип bool и булевы операторы Преобразование типа bool Равенство и операции сравнения Условные операции Строки и символы Преобразование типа char Тип string Массивы Инициализация элементов по умолчанию Многомерные массивы Упрощенные выражения для инициализации массива Проверка границ массива Переменные и параметры Стек и куча Определенное присваивание Значения по умолчанию Параметры Ключевое слово var : неявная типизация локальных переменных (C# 3.0) Выражения и операции Первичные выражения Выражения, не имеющие значения Выражения присваивания Приоритет и ассоциативность операций Таблица операций Операторы Операторы объявления Операторы выражений Операторы выбора Операторы цикла Операторы перехода Прочие операторы Пространства имен Ключевое слово namespace Полностью квалифицированные имена Директива using Глобальное пространство имен Правила для пространств имен Псевдонимы типов и пространств имен Дополнительные возможности пространств имен Глава 3. Создание типов в C# Классы Поля Методы Конструкторы экземпляров Инициализаторы объектов (C# 3.0) Ссылка this Свойства Индексаторы Константы Статические конструкторы Статические классы Финализаторы Частичные классы и методы Наследование Полиморфизм Приведение типов Виртуальные функции Абстрактные классы и абстрактные члены Сокрытие унаследованных членов Запечатывание функций и классов Ключевое слово base Конструкторы и наследование Порядок инициализации конструкторов и полей Перегрузка и разрешение конфликтов Тип object Упаковка и распаковка Статическая и динамическая проверка типа Метод GetType и операция typeof Метод ToString Список членов объекта Структуры Конструирование структуры Модификаторы доступа Примеры Понижение уровня доступности Ограничения, накладываемые на модификаторы доступа Интерфейсы Расширение интерфейса Явная реализация интерфейса Виртуальная реализация членов интерфейса Новая реализация интерфейса в подклассе Интерфейсы и упаковка Выбор между классом и интерфейсом Перечисления Преобразования перечислений Перечисление флагов Операции над перечислениями Безопасность типов Вложенные типы Обобщенные типы Объявление обобщенных типов Для чего существуют обобщенные типы Обобщенные методы Объявление обобщенных параметров Операция typeof для обобщенных типов Значение по умолчанию для обобщенного типа Ограничения для обобщенных типов Обобщенные типы и ковариантность Сравнение обобщенных типов и массивов Создание подклассов обобщенных классов Обобщенные объявления, ссылающиеся на себя Статические данные Обобщенные типы C# и шаблоны С++ Глава 4. Более сложные элементы C# Делегаты Написание подключаемых методов Групповые делегаты Экземплярные методы-цели Обобщенные типы делегатов Делегаты и интерфейсы Совместимость делегатов События Стандартная модель событий Методы обращения к событиям Модификаторы событий Лямбда-выражения (C# 3.0) Явное указание типов параметров лямбда-выражения Обобщенные лямбда-выражения и делегаты Func Внешние переменные Анонимные методы Операторы try и исключения Конструкция catch Блок finally Возбуждение исключений Важнейшие свойства класса System. Exception Распространенные типы исключений Распространенные способы программирования Перечисление и итераторы Перечисление Итераторы Семантика итераторов Формирование последовательностей Конструирование перечисляемого объекта Типы, допускающие значение null Значение null Поднятие операций Тип bool? Операция проверки на null Применение типов, допускающих значение null Альтернативы для типов, допускающих значение null Перегрузка операций Обзор Операторные функции Перегрузка операций равенства и сравнения Нестандартные явные и неявные преобразования типов Перегрузка true и false Методы расширения (C# 3.0) Цепочки методов расширения Устранение неоднозначности Методы расширения и интерфейсы Анонимные типы (C# 3.0) Атрибуты Классы атрибутов Именованные и позиционные параметры Цели атрибутов Указание нескольких атрибутов Небезопасный код и указатели Основы работы с указателями Небезопасный код Оператор fixed Операция «указатель на элемент» Массивы Конструкция void* Указатели на неуправляемый код Препроцессорные директивы Условные атрибуты Прагматичный подход к предупреждениям XML-документирование Стандартные XML-теги Теги, определяемые пользователем Перекрестные ссылки Глава 5. Обзор возможностей платформы Framework Что нового в .NET Framework Среда CLR и «ядро» платформы Framework Системные типы Обработка текста Коллекции Запросы XML Потоки и ввод/вывод Работа в сети Сериализация Сборки, отражение и атрибуты Безопасность Нити выполнения и асинхронные методы Домены приложения Низкоуровневое взаимодействие Диагностика Прикладные технологии Технологии для создания пользовательского интерфейса Технологии работы с базами данных Технологии построения распределенных систем Глава 6. Основы Framework Работа со строками и текстом Тип char Строки Сравнение строк Текстовые кодировки и Unicode Дата и время Структура TimeSpan Структуры DateTime и DateTimeOffset Даты и часовые пояса Часовые пояса и структура DateTime Часовые пояса и структура DateTimeOffset Классы TimeZone и TimeZoneInfo Структура DateTime и переход на летнее/зимнее время Форматирование и разбор строк Методы ToString и Parse Поставщики форматов Стандартные строки формата и флаги разбора Строки формата для чисел Флаги NumberStyles Строки формата для DateTime Флаги DateTimeStyles Строки формата для перечисления Другие механизмы преобразования Класс Convert Класс XmlConvert Преобразователи типов Класс BitConverter Работа с числами Преобразования Класс Math Класс Random Перечисления Преобразования перечислений Перебор элементов перечисления Как работают перечисления Структура Guid Сравнение для выяснения равенства Равенство по значению и ссылочное равенство Стандартные протоколы равенства Равенство типов, определяемых пользователем Сравнение для выяснения порядка Интерфейсы IComparable Операции < и > Реализация интерфейсов IComparable Вспомогательные классы Класс Console Класс Environment Класс Process Глава 7. Коллекции Перечисление Интерфейсы IEnumerable и IEnumerator Интерфейсы IEnumerable<T> и IEnumerator<T> Реализация интерфейсов перечисления Интерфейс IDictionaryEnumerator Интерфейсы ICollection и IList Интерфейсы ICollection и ICollection<T> Интерфейсы IList и IList<T> Класс Array Конструирование массива и индексация его элементов Перебор элементов массива Длина и размерность массива Поиск в массиве Сортировка массива Изменение порядка элементов на противоположный Копирование, преобразование типа и изменение размера массива Списки, очереди, стеки и множества Классы List<T> и ArrayList Класс LinkedList<T> Классы Queue и Queue<T> Классы Stack и Stack<T> Класс BitArray Класс HashSet<T> Словари Интерфейсы IDictionary и IDictionary<TKey, TValue> Классы Dictionary<TKey, TValue> и Hashtable Класс OrderedDictionary Классы ListDictionary и HybridDictionary Отсортированные словари Коллекции, настраиваемые пользователем, и прокси-классы Классы Collection<T> и CollectionBase Классы KeyedCollection<TKey, TItem> и DictionaryBase Класс ReadOnlyCollection<T> Подключение протоколов выяснения равенства и порядка Интерфейсы IEqualityComparer и класс EqualityComparer Интерфейсы IComparer и класс Comparer Класс StringComparer Глава 8. Запросы LINQ Основы Лямбда-запросы Цепочки операторов запросов Составление лямбда-выражений Естественный порядок элементов Прочие операторы Синтаксис, облегчающий восприятие запроса Переменные итерации Синтаксис, облегчающий восприятие запроса, и SQL-синтаксис Синтаксис, облегчающий восприятие запроса, и лямбда-синтаксис Запросы со смешанным синтаксисом Отложенное выполнение Повторное выполнение Внешние переменные Механика отложенного выполнения Цепочки декораторов Как выполняются запросы Подзапросы Подзапросы и отложенное выполнение Стратегии построения сложных запросов Последовательное построение запросов Ключевое слово into Создание оболочек для запросов Стратегии проецирования Инициализаторы объектов Анонимные типы Ключевое слово let Интерпретируемые запросы Как работают интерпретируемые запросы Комбинирование интерпретируемых и локальных запросов Оператор AsEnumerable Запросы LINQ to SQL Классы сущностей в технологии LINQ to SQL Объект DataContext Автоматическое генерирование сущностей Ассоциирование Отложенное выполнение запросов LINQ to SQL Класс DataLoadOptions Обновления Построение выражений для запросов Делегаты и деревья выражений Деревья выражений Глава 9. Операторы LINQ Обзор операторов Коллекция ? коллекция Коллекция → не коллекция Не коллекция → коллекция Фильтрация Оператор Where Операторы Take и Skip Операторы TakeWhile и SkipWhile Оператор Distinct Проецирование Оператор Select Описание Оператор SelectMany Объединение Операторы Join и GroupJoin Упорядочивание Операторы OrderBy, OrderByDescending, ThenBy и ThenByDescending Группирование Оператор GroupBy Операции над множествами Операторы Concat и Union Операторы Intersect и Except Методы преобразования Операторы OfType и Cast Операторы ToArray, ToList, ToDictionary и ToLookup Операторы AsEnumerable и AsQueryable Поэлементные операции Операторы First, Last и Single Оператор ElementAt Оператор DefaultIfEmpty Методы агрегирования Операторы Count и LongCount Операторы Min и Max Операторы Sum и Average Оператор Aggregate Квантификаторы Операторы Contains и Any Операторы All и SequenceEqual Методы генерирования коллекций Метод Empty Методы Range и Repeat Глава 10. Запросы LINQ to XML Обзор архитектуры Что такое DOM? DOM в технологии запросов LINQ to XML Обзор модели X-DOM Загрузка и синтаксический анализ Сохранение и сериализация Создание экземпляра дерева X-DOM Функциональное конструирование Указание содержимого Автоматическое глубокое клонирование Навигация и отправка запросов Навигация по узлам-потомкам Навигация по родительским элементам Навигация по элементам одного уровня Навигация по атрибутам Редактирование дерева X-DOM Обновление простых значений Редактирование узлов-потомков и атрибутов Обновление узла через его родителя Работа со значениями Установка значений Чтение значений Значения и узлы со смешанным содержимым Автоматическая конкатенация элементов XText Документы и объявления Класс XDocument XML-объявления Имена и пространства имен Пространства имен в XML Указание пространства имен в модели X-DOM X-DOM и пространства имен по умолчанию Аннотации Проецирование в модель X-DOM Исключение пустых элементов Проецирование в поток Преобразование дерева X-DOM Глава 11. Другие XML-технологии Класс XmlReader Чтение узлов Чтение элементов Чтение атрибутов Пространства имен и префиксы Класс XmlWriter Запись атрибутов Запись узлов других типов Пространства имен и префиксы Примеры использования классов XmlReader и XmlWriter Работа с иерархическими структурами Комбинирование класса XmlReader или XmlWriter с моделью X-DOM Класс XmlDocument Загрузка и сохранение объекта XmlDocument Обход дерева XmlDocument Свойства InnerText и InnerXml Создание узлов и манипуляции с ними Пространства имен Язык XPath Самые распространенные операторы XPath Класс XPathNavigator Выдача запросов с учетом пространств имен Класс XPathDocument XSD и проверка корректности документа Проверка соответствия схеме XSLT Глава 12. Удаление объектов и сборка мусора Интерфейс IDisposable и методы Dispose и Close Стандартная семантика удаления объектов Когда следует удалять объекты Условное удаление Сборка мусора и финализаторы Вызов метода Dispose из финализатора Как работает сборщик мусора Приемы оптимизации Принудительная сборка мусора Альтернативы сборке мусора Глава 13. Потоки и ввод/вывод Архитектура потоков Работа с потоками Чтение и запись Перемещение внутри потока Закрытие и очистка буфера Тайм-ауты Безопасность работы нитей с потоками Поток с резервным хранилищем Класс FileStream Класс MemoryStream Класс PipeStream Класс BufferedStream Потоковые адаптеры Текстовые адаптеры Двоичные адаптеры Закрытие и удаление адаптеров потоков Операции с файлами и каталогами Класс File Класс Directory Классы FileInfo и DirectoryInfo Класс Path Специальные папки Получение информации о томе Слежение за событиями файловой системы Сжатие файлов Сжатие данных в памяти Изолированная память Виды изоляции Чтение и запись в изолированную память Местоположение изолированной памяти Перебор элементов изолированной памяти Глава 14. Работа в сети Архитектура сети Адреса и порты URI Архитектура «запрос/ответ» Класс WebClient Классы WebRequest и WebResponse Прокси-серверы Аутентификация Параллелизм Обработка исключений Поддержка протокола HTTP Заголовки Строки запросов Выгрузка данных формы Cookie Аутентификация с помощью форм SSL Создание HTTP-сервера Работа с протоколом FTP Работа с DNS Отправка почты с помощью класса SmtpClient Работа с протоколом ТСР Параллелизм и TCP Прием POP3-почты с помощью протокола ТСР Глава 15. Сериализация Концепции сериализации Механизмы сериализации Форматеры Явная и неявная сериализация Сериализатор с контрактом данных Классы DataContractSerializer и NetDataContractSerializer Применение сериализаторов Сериализация подклассов Ссылки на объекты Устойчивость к изменению версии Порядок следования членов Пустое значение и значение null Контракты данных и коллекции Элементы коллекции с подклассами Изменение имен коллекций и элементов Расширение контрактов данных Инструменты сериализации и десериализации Взаимодействие с типом, помеченным как [Serializable] Взаимодействие с типом, реализующим интерфейс IXmlSerializable Двоичный сериализатор С чего начать Атрибуты двоичной сериализации Атрибут [NonSerialized] Атрибуты [OnDeserializing] и [OnDeserialized] Атрибуты [OnSerializing] и [OnSerialized] Атрибут [OptionalField] и сопровождение версий Двоичная сериализация и интерфейс ISerializable Создание подклассов сериализуемых классов XML-сериализация Сериализация на основе атрибутов Подклассы и объекты-потомки Сериализация коллекций Интерфейс IXmlSerializable Глава 16. Сборки Что такое сборка Манифест сборки Манифест приложения Модули Класс Assembly Подписание сборки Как подписать сборку Отсроченное подписание Имена сборок Полностью квалифицированные имена Класс AssemblyName Глобальный кэш сборок Как устанавливать сборки в глобальном кэше сборок Глобальный кэш сборок и отслеживание версий Ресурсы и вспомогательные сборки Непосредственное встраивание ресурсов Файлы. resources Файлы .resx Вспомогательные сборки Культуры и субкультуры Поиск и загрузка сборок Правила поиска сборок и типов Событие AssemblyResolve Загрузка сборок Развертывание сборок за пределами базового каталога Упаковка однофайлового приложения Избирательное наложение «заплат» Работа со сборками, на которые нет ссылок Глава 17. Отражение и метаданные Отражение и активизация типов Получение экземпляра класса Type Имена типов Базовые типы и интерфейсы Создание экземпляров типов Обобщенные типы Отражение и вызов членов Типы-члены Члены C# и члены CLR Члены обобщенных типов Динамический вызов члена Параметры методов Повышение производительности с помощью делегатов Обращение к закрытым членам Обобщенные методы Анонимный вызов членов обобщенного типа Отражение сборок Загрузка сборки в контекст, допускающий только отражение Модули Работа с атрибутами Основы работы с атрибутами Атрибут AttributeUsage Определение собственного атрибута Чтение атрибутов на этапе выполнения Получение атрибутов в контексте отражения Динамическое генерирование кода Генерирование IL-кода с помощью класса DynamicMethod Стек вычислений Передача параметров классу DynamicMethod Генерирование локальных переменных Ветвление Создание объектов и вызов экземплярных методов Обработка исключений Генерирование сборок и типов Сохранение порожденных сборок Объектная модель Reflection. Emit Генерирование членов типа Генерирование методов Генерирование полей и свойств Генерирование конструкторов Добавление атрибутов Генерирование обобщенных методов и типов Определение обобщенных методов Определение обобщенных типов Неудобные цели генерирования Несозданные замкнутые обобщенные типы Циклические зависимости Анализ IL-кода Написание дизассемблера Глава 18. Безопасность Разрешения Классы CodeAccessPermission и PrincipalPermission Класс PermissionSet Декларативная и принудительная безопасность Безопасность обращения к коду Как CLR выделяет разрешения Работа в изоляции Необязательные разрешения Изоляция другой сборки Требования связывания и частичное доверие к вызывающему коду Как утверждать права Безопасность в операционной системе Работа под стандартной пользовательской учетной записью Повышение прав и виртуализация Безопасность, основанная на именах и ролях Указание пользователей и ролей Обзор криптографических возможностей Защита данных Windows Хеширование Симметричное шифрование Шифрование в памяти Образование цепочек из потоков шифрования Уничтожение шифрующих объектов Управление ключами Шифрование с открытым ключом и постановка цифровой подписи Класс RSA Цифровая подпись Глава 19. Нити выполнения Правильное использование нитей Основы Передача данных Совместное обращение к данным Пулы нитей Приоритетные и фоновые нити Приоритет нити Обработка исключений Асинхронные делегаты Синхронизация Приостановка выполнения Приостановка и работа вхолостую Блокировка Выбор синхронизирующего объекта Вложенные блокировки Когда ставить блокировку Блокировка и атомарность Производительность кода, соперничество блокировок и взаимные блокировки Класс Mutex Класс Semaphore Безопасность нитей Безопасность нитей и типы .NET Framework Безопасность нитей в серверах приложений Безопасность нитей в многофункциональных клиентских приложениях Незадерживающая синхронизация Атомарность и класс Interlocked Барьеры памяти и некэшируемость Сигнализация с помощью дескрипторов ожидания событий Создание и уничтожение дескрипторов ожидания Двухсторонняя сигнализация Создание объекта EventWaitHandle для нескольких процессов Пул дескрипторов ожидания Методы WaitAny, WaitAll и SignalAndWait Сигнализация с помощью методов Wait и Pulse Как пользоваться методами Wait и Pulse Очередь «производитель/потребитель» Тайм-ауты метода Wait Двухсторонняя сигнализация Имитация дескрипторов ожидания Методы Interrupt и Abort Метод Interrupt Метод Abort Безопасное завершение Локальное хранение данных Класс BackgroundWorker Создание подкласса для BackgroundWorker Класс ReaderWriterLockSlim Обновляемые блокировки и рекурсия Таймеры Многонитевые таймеры Однонитевые таймеры Глава 20. Асинхронные методы Для чего существуют асинхронные методы Сигнатуры асинхронных методов Асинхронные методы и асинхронные делегаты Применение асинхронных методов Написание асинхронных методов Поддельные асинхронные методы Альтернативы асинхронным методам Асинхронные события Глава 21. Домены приложений Архитектура доменов приложений Создание и уничтожение доменов приложений Работа с несколькими доменами приложения Метод DoCallBack Домены и нити Совместное обращение к данным из разных доменов Применение слотов Удаленное взаимодействие внутри процесса Изолирование типов и сборок Глава 22. Интеграция с DLL Вызов кода из DLL Маршалинг обычных типов Маршалинг классов и структур Входной и выходной маршалинг Обратные вызовы из неуправляемого кода Имитация объединения из языка С Совместно используемая память Отображение структуры в неуправляемую память Ключевое слово fixed Справочник по атрибутам Атрибут DllImport Атрибут StructLayout Атрибут FieldOffset Атрибут MarshalAs Глава 23. Диагностика Условная компиляция Условная компиляция как альтернатива статическим переменным-флагам Атрибут Conditional Классы Debug и Trace Класс TraceListener Принудительная запись на диск и закрытие слушателей Интеграция с отладчиком Присоединение отладчика и прерывание выполнения Атрибуты отладчика Процессы и нити Анализ работающего процесса Анализ нитей в процессе Классы StackTrace и StackFrame Журнал событий Windows Запись в журнал событий Чтение журнала событий Мониторинг журнала событий Счетчики производительности Просмотр доступных счетчиков Чтение данных из счетчиков производительности Создание счетчиков и запись данных о производительности Класс Stopwatch Глава 24. Регулярные выражения Основы регулярных выражений Откомпилированные регулярные выражения Перечисление RegexOptions Экранирование символов Множества символов Квантификаторы «Жадные» и «ленивые» квантификаторы Директивы нулевой длины Просмотр вперед и просмотр назад Якоря Границы слов Группы Именованные группы Замещение и разбивка на части Делегат MatchEvaluator Разбивка текста Сборник рецептов по регулярным выражениям Рецепты Справочник по языку регулярных выражений Приложение 1. Ключевые слова языка C# Приложение 2. Соответствие сборок пространствам имен Предметный указатель