C# 5.0. Справочник. Полное описание языка - Данное руководство, ставшее бестселлером, позволяет получить точные ответы практически на любые вопросы по C# 5.0 и .NET CLR. Уникально организованное по концепциям и сценариям использования, обновленное 5-е издание книги предлагает реорганизованные разделы, посвященные параллелизму, многопоточности и параллельному программированию, а также включает подробные материалы по новому средству C# 5.0 – асинхронным функциям. Проверенная более чем 20 экспертами, в числе которых Эрик Липперт, Стивен Тауб, Крис Барроуз и Джон Скит, эта книга содержит все, что необходимо для освоения C# 5.0. Она широко известна как исчерпывающий справочник по языку. Изучите основы языка C#, включая синтаксис, типы и переменные Исследуйте более сложные темы, такие как небезопасный код и вариантность типов Научитесь пользоваться языком LINQ благодаря трем посвященным ему главам Освойте контракты кода, динамическое программирование и параллельное программирование Научитесь работать со средствами .NET, в том числе с рефлексией, сборками, управлением памятью, безопасностью, вводом-выводом, XML, коллекциями, взаимодействием с сетью и собственной поддержкой взаимодействия.
Название: C# 5.0. Справочник. Полное описание языка Автор: Джозеф Албахари, Бен Албахари Издательство: Вильямс Год: 2014 Страниц: 1008 Формат: DJVU Размер: 8,69 МБ ISBN: 978-5-8459-1819-2 Качество: Отличное Серия или Выпуск: Бестселлеры O'Reilly Язык: Русский
Содержание:
Об авторах Благодарности Предисловие Предполагаемая читательская аудитория Как организована эта книга Что требуется для работы с этой книгой Соглашения, используемые в этой книге Использование примеров кода От издательства Глава 1. Введение в C# и .NET Framework Объектная ориентация Безопасность в отношении типов Управление памятью Поддержка платформ Отношения C# и CLR CLR и. NET Framework C# и Windows Runtime Что нового в C# 5.0 Что нового в C# 4.0 Что нового в C# 3.0 Глава 2. Основы языка C# Первая программа на C# Компиляция Синтаксис Идентификаторы и ключевые слова Литералы, знаки пунктуации и операции Комментарии Основы типов Примеры предопределенных типов Примеры специальных типов Преобразования Типы значений и ссылочные типы Классификация предопределенных типов Числовые типы Числовые литералы Числовые преобразования Арифметические операции Операции инкремента и декремента Специальные целочисленные операции 8- и 16-битные целочисленные типы Специальные значения float и double Сравнение double и decimal Ошибки округления вещественных чисел Булевскиетипыиоперации Булевские преобразования Операции сравнения и проверки равенства Условные операции Строки и символы Символьные преобразования Строковый тип Массивы Стандартная инициализация элементов Многомерные массивы Упрощенные выражения инициализации массивов Проверка границ Переменные и параметры Стек и куча Определенное присваивание Стандартные значения Параметры Объявление неявно типизированных локальных переменных с помощью var Выражения и операции Первичные выражения Пустые выражения Выражения присваивания Приоритеты операций и ассоциативность Таблица операций Операторы Операторы объявления Операторы выражений Операторы выбора Операторы итераций Операторы перехода Разные операторы Пространства имен Директива using Правила внутри пространств имен Назначение псевдонимов типам и пространствам имен Дополнительные возможности пространств имен Глава 3. Создание типов в C# Классы Поля Методы Конструкторы экземпляров Инициализаторы объектов Ссылка this Свойства Индексаторы Константы Статические конструкторы Статические классы Финализаторы Частичные типы и методы Наследование Полиморфизм Приведение и ссылочные преобразования Виртуальные функции-члены Абстрактные классы и абстрактные члены Сокрытие унаследованных членов Запечатывание функций и классов Ключевое слово base Конструкторы и наследование Перегрузка и распознавание Тип object Упаковка и распаковка Статическая проверка типов и проверка типов во время выполнения Метод GetType и операция typeof МeTOflToString Список членов ob j e с t Структуры Семантика конструирования структуры Модификаторыдоступа Примеры Дружественные сборки Перекрытиедоступности Ограничения, накладываемые на модификаторы доступа Интерфейсы Расширение интерфейса Явная реализация членов интерфейса Реализация виртуальных членов интерфейса Повторная реализация члена интерфейса в подклассе Интерфейсы и упаковка Перечисления Преобразования перечислений Перечисления флагов Операции над перечислениями Проблемы безопасности типов Вложенные типы Обобщения Обобщенные типы Для чего предназначены обобщения Обобщенные методы Объявление параметров типа Операция typeof и несвязанные обобщенные типы Стандартное обобщенное значение Ограничения обобщений Создание подклассов для обобщенных классов Самоссылающиеся объявления обобщений Статические данные Параметры типа и преобразования Ковариантность Контравариантность Сравнение обобщений C# и шаблонов C++ Глава 4. Дополнительные средства C# Делегаты Написание подключаемых методов с помощью делегатов Групповые делегаты Цели в виде методов экземпляра и статических методов Обобщенные типы делегатов Делегаты Func и Action Сравнение делегатов и интерфейсов Совместимость делегатов События Стандартный шаблон событий Средства доступа к событию Модификаторы событий Лямбда-выражения Явное указание типов лямбда-параметров Захватывание внешних переменных Анонимные методы Операторы try и исключения Конструкция catch RnoKfinally Генерация исключений Ключевые свойства System. Exception Общие типы исключений Шаблон методов TryXXX Альтернативы исключениям Перечисление и итераторы Перечисление Инициализаторы коллекций Итераторы Семантика итератора Компоновка последовательностей Типы, допускающие значение null Структура Nullable<T> Подъем операций Тип bool? с операциями & и | ОперацияобъединенияспиИ Сценарии для типов, допускающих null Альтернативы типам, допускающим значение nu Перегрузка операций Функции операций Перегрузка операций эквивалентности и сравнения Специальные неявные и явные преобразования Перегрузка true и false Расширяющие методы Цепочки расширяющих методов Неоднозначность и разрешение Анонимные типы Динамическое связывание Сравнение статического и динамического связываний Специальное связывание Языковое связывание Исключение RuntimeBinderException Представление dynamic во время выполнения Динамические преобразования Сравнение var и dynamic Динамические выражения Динамические вызовы без динамических получателей Статические типы в динамических выражениях Невызываемые функции Атрибуты Классы атрибутов Именованные и позиционные параметры атрибутов Цели атрибутов Указание нескольких атрибутов Атрибуты информации о вызывающем компоненте (C# 5) Небезопасный код и указатели Основы указателей Небезопасный код Оператор fixed Операция указателя на член Массивы void* Указатели на неуправляемый код Директивы препроцессора Условные атрибуты Директива #pragma warning XML-документация Стандартные XML-дескрипторы документации Дескрипторы, определяемые пользователем Перекрестные ссылки на типы или члены Глава 5. Обзор. NET Framework Среда CLR и ядро платформы Системные типы Обработка текста Коллекции Запросы XML Диагностика и контракты кода Параллелизм и асинхронность Потоки данных и ввод-вывод Работа с сетями Сериализация Сборки, рефлексия и атрибуты Динамическое программирование Безопасность Расширенная многопоточность Параллельное программирование Домены приложений Собственная возможность взаимодействия и взаимодействие с COM Прикладные технологии Технологии пользовательских интерфейсов Технологии серверной части Технологии распределенных систем Глава 6. Основы. NET Framework Обработка строк и текста Тип char Тип string Сравнение строк Класс StringBuilder Кодировка текста и Unicode Дата и время Структура TimeSpan Структуры DateTime и DateTimeOffset Даты и часовые пояса DateTime и часовые пояса DateTimeOffset и часовые пояса TimeZone и TimeZoneInfo Летнее время и DateTime Форматирование и разбор ToStringnParse Поставщики форматов Стандартные форматные строки и флаги разбора Форматные строки для чисел nepe4Hc^eHHeNumberStyles Форматные строки для даты/времени Перечисление DateTimeStyles Форматные строки для перечислений Другие механизмы преобразования Класс Convert Класс XmlConvert Преобразователи типов Класс BitConverter Глобализация Контрольный перечень глобализации Тестирование Работа с числами Преобразования Класс Math Структура BigInteger Структура Complex Класс Random Перечисления Преобразования для перечислений Перечисление значений enum Как работают перечисления Кортежи Сравнение кортежей Структура Guid Сравнение эквивалентности Эквивалентность значений и ссылочная эквивалентность Стандартные протоколы эквивалентности Эквивалентность и специальные типы Сравнение порядка Интерфейсы IComparable < и > Реализация интерфейсов IC ompar ab 1 e Служебные классы KraccConsole Класс Environment Класс Process Глава 7. Коллекции Перечисление IEnumerable и IEnumerator IEnumerable<T> и IEnumerator<T> Реализация интерфейсов перечисления Интерфейсы ICollection и IList ICollection<T> и ICollection IList<T> и IList IReadOnlyList<T> Класс Array Конструирование и индексация Перечисление Длина и ранг Поиск Сортировка Обращение порядка элементов Копирование Преобразование и изменение размера Списки, очереди, стеки и наборы List<T> и ArrayList LinkedList<T> Queue<T> и Queue Stack<T> и Stack BitArray HashSet<T> и SortedSet<T> Словари IDictionary<TKey, TValue> IDictionary Dictionary<TKey, TValue> и Hashtable OrderedDictionary ListDictionary и HybridDictionary Отсортированные словари Настраиваемые коллекции и прокси Collection<T> и CollectionBase KeyedCollection<TKey, TItem> и DictionaryBase ReadOnlyCollection<T> Подключение протоколов эквивалентности и порядка IEqualityComparer и EqualityComparer IComparer и Comparer StringComparer IStructuralEquatable иIStructuralComparable Глава 8. Запросы LINQ Начало работы Текучий синтаксис Выстраивание в цепочки операций запросов Составление лямбда-выражений Естественный порядок Другие операции Выражения запросов Переменные диапазона Сравнение синтаксиса запросов и синтаксиса SQL Сравнение синтаксиса запросов и текучего синтаксиса Запросы со смешанным синтаксисом Отложенное выполнение Повторная оценка Захваченные переменные Как работает отложенное выполнение Построение цепочки декораторов Каким образам выполняются запросы Подзапросы Подзапросы и отложенное выполнение Стратегии композиции Последовательное построение запросов Ключевое слово into Упаковка запросов Стратегии проекции Инициализаторы объектов Анонимные типы Ключевое слово Iet Интерпретируемые запросы Каким образом работают интерпретируемые запросы Комбинирование интерпретируемых и локальных запросов AsEnumerable LINQ to SQL и Entity Framework Сущностные классы LINQ to SQL Сущностные классы Entity Framework DataContext и Obj ectContext Ассоциации Отложенное выполнение в L2S и EF DataLoadOptions Энергичная загрузка в Entity Framework Обновления Отличия между API-интерфейсами L2S и EF Построение выражений запросов Сравнение делегатов и деревьев выражений AsQueryable Деревья выражений Глава 9. Операции LINQ Обзор Последовательность→последовательность Последовательность→элемент или значение Ничего→последовательность Выполнение фильтрации Where Take и Skip TakeWhile и SkipWhile Distinct Выполнение проекции Select SelectMany Выполнение соединения Join и GroupJoin Операция Zip Упорядочение OrderBy, OrderByDescending, ThenBy и ThenByDescending Группирование GroupBy Операции над множествами ConcatHUnion IntersectHExcept Методы преобразования OfType и Cast ToArray, ToList, ToDictionary и ToLookup AsEnumerableHAsQueryable Операции элементов First, LastHSingle ElementAt DefaultIfEmpty Методы агрегирования Count и LongCount Min и Max SumnAverage Aggregate Квантификаторы ContainsnAny All и SequenceEqual Методы генерации Empty Range и Repeat Глава 10. LINQto XML Обзор архитектуры Что собой представляет DOM-модель? DOM-модель LINQ to XML Обзор X-DOM Загрузка и разбор Сохранение и сериализация Создание экземпляра X-DOM Функциональное построение Указание содержимого Автоматическое глубокое копирование Навигация и запросы Навигация по дочерним узлам Навигация по родительским узлам Навигация по равноправным узлам Навигация по атрибутам Обновление X-DOM Обновление простых значений Обновление дочерних узлов и атрибутов Обновление через Parent Работа со значениями Установка значений Получение значений Значения и узлы со смешанным содержимым Автоматическая конкатенация 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, DisposeHClose Стандартная семантика освобождения Когда выполнять освобождение Подключаемое освобождение Очистка полей при освобождении Автоматическая сборка мусора Корневые объекты Сборка мусора и WinRT Финализаторы Вызов метода Dispose из финализатора Восстановление Как работает сборщик мусора? Технологии оптимизации Принудительный запуск сборки мусора Нагрузка на память Утечки управляемой памяти Таймеры Диагностика утечек памяти Слабые ссылки Слабые ссылки и кеширование Слабые ссылки и события Глава 13. Диагностика и контракты кода Условная компиляция Сравнение условной компиляции и статических переменных-флагов Атрибут Conditional Классы Debug и Trace FailHAssert TraceListener Сброс и закрытие прослушивателей Обзор контрактов кода Зачем использовать контракты кода? Принципы, лежащие в основе контрактов Предусловия Contract.Requires Contract.Requires<TException> Contract.EndContractBlock Предусловия и переопределенные методы Постусловия Contract.Ensures Contract.EnsuresOnThrow<TException> Contract.Result<T> и Contract. ValueAtReturn<T> Contract.01dValue<T> Постусловия и переопределенные методы Утверждения и инварианты объектов Утверждения Инварианты объектов Контракты на интерфейсах и абстрактных методах Обработка нарушения контракта Событие ContractFailed Исключения внутри условий контракта Избирательное применение контрактов Контракты в окончательных сборках Проверка на стороне вызывающего компонента Статическая проверка контрактов Атрибут ContractVerification Базовые уровни ArpH6yTSuppressMessage Интеграция с отладчиком Присоединение и останов Атрибуты отладчика Процессы и потоки процессов Исследование выполняющихся процессов Исследование потоков в процессе StackTrace и StackFrame Журналы событий Windows Запись в журнал событий Чтение журнала событий Мониторинг журнала событий Счетчики производительности Перечисление доступных счетчиков производительности Чтение данных счетчика производительности Создание счетчиков и запись данных о производительности Класс Stopwatch Глава 14. Параллелизм и асинхронность Введение Многопоточная обработка Создание потока JoinnSleep Блокировка Локальное или разделяемое состояние Блокировка и безопасность потоков Передача данных потоку Обработка исключений Потоки переднего плана или фоновые потоки Приоритет потока Передача сигналов Многопоточность в обогащенных клиентских приложениях Контексты синхронизации Пул потоков Задачи Запуск задачи Возврат значений Исключения Продолжение TaskCompletionSource Task.Delay Принципы асинхронности Сравнение синхронных и асинхронных операций Что собой представляет асинхронное программирование? Асинхронное программирование и продолжение Важность языковой поддержки Асинхронные функции в C# 5.0 Ожидание Написание асинхронных функций Асинхронные лямбда-выражения Асинхронные методы в WinRT Асинхронность и контексты синхронизации Оптимизация Асинхронные шаблоны Отмена Сообщение о ходе работ Асинхронный шаблон, основанный на задачах Комбинаторы задач Устаревшие шаблоны Модель асинхронного программирования Асинхронный шаблон на основе событий BackgroundWorker Глава 15. Потоки данных и ввод-вывод Потоковая архитектура Использованиепотоков Чтение и запись Поиск Закрытие и сброс Тайм-ауты Безопасность в отношении потоков управления Потоки с опорными хранилищами FileStream MemoryStream PipeStream BufferedStream Адаптеры потоков Текстовые адаптеры Двоичные адаптеры Закрытие и освобождение адаптеров потоков Потоки со сжатием Сжатие в памяти Работа с zip-файлами Операции с файлами и каталогами Класс File Класс Directory FileInfoHDirectoryInfo Path Специальные папки Запрашивание информации о томе Перехват событий файловой системы Файловый ввод-вывод в Windows Runtime Работа с каталогами Работа с файлами Изолированное хранилище в приложениях Metro Размещенные в памяти файлы Размещенные в памяти файлы и произвольный ввод-вывод файлов Размещенные в памяти файлы и разделяемая память Работа с аксессорами представлений Изолированное хранилище Типы изоляции Чтение и запись в изолированное хранилище Местоположение хранилища Перечисление изолированного хранилища Глава 16. Взаимодействие с сетью Сетевая архитектура Адреса и порты Идентификаторы URI Классы клиентской стороны WebClient WebRequest и WebResponse HttpClient Прокси-серверы Аутентификация Обработка исключений Работа с HTTP Заголовки Строки запросов Выгрузка данных формы Cookie-наборы Аутентификация на основе форм SSL Реализация НТТР-сервера Использование FTP Использование DNS Отправка сообщений электронной почты с помощью SmtpClient Использование TCP Параллелизм и TCP Получение почты POP3 с помощью TCP TCP в Windows Runtime Глава 17. Сериализация Концепции сериализации Механизмы сериализации Форматеры Сравнение явной и неявной сериализации Сериализатор контрактов данных Сравнение DataContractSerializer и NetDataContractSerializer Использование сериализаторов Сериализация подклассов Объектные ссылки Переносимость версий Упорядочение членов Пустые значения и null Контракты данных и коллекции Элементы коллекции, являющиеся подклассами Настройка имен коллекции и элементов Расширение контрактов данных Ловушки сериализации и десериализации Возможность взаимодействия с помощью [Seriа1izab1e] Возможность взаимодействия с помощью IXmlSerializable Двоичный сериализатор Начало работы Атрибуты двоичной сериализации [NonSerialized] [OnDeserializing] и [OnDeserialized] [OnSerializing] и [OnSerialized] [OptionalField] иподдержкаверсий Двоичная сериализация с помощью IS e r i а 1 i z ab 1 e Создание подклассов из сериализируемых классов Сериализация XML Начало работы с сериализацией на основе атрибутов Подклассы и дочерние объекты Сериализация коллекций IXmlSerializable Глава 18. Сборки Содержимое сборки Манифест сборки Манифест приложения Модули KraccAssembly Строгие имена и подписание сборок Назначение сборке строгого имени Отложенное подписание Имена сборок Полностью заданные имена Клacc AssemblyName Информационная и файловая версии сборки Подпись Authenticode Подписание с помощью системы Authenticode Проверка достоверности подписей Authenticode Глобальный кеш сборок Установка сборок в GAC GAC и поддержка версий Ресурсы и подчиненные сборки Непосредственное встраивание ресурсов Файлы. resources Файлы. resx Подчиненные сборки Культуры и подкультуры Разрешение и загрузка сборок Правила разрешения сборок и типов Событие AssemblyResolve Загрузка сборок Развертывание сборок за пределами базовой папки Упаковка однофайловой исполняемой сборки Избирательное исправление Работа со сборками, не имеющими ссылок на этапе компиляции Глава 19. Рефлексия и метаданные Рефлексия и активизация типов Получение экземпляра Type Имена типов Базовые типы и интерфейсы Создание экземпляров типов Обобщенные типы Рефлексия и вызов членов Типы членов Сравнение членов C# и членов CLR Члены обобщенных типов Динамический вызов члена Параметры методов Использование делегатов для повышения производительности Доступ к неоткрытым членам Обобщенные методы Анонимный вызов членов обобщенного интерфейса Рефлексия сборок Загрузка сборки в контекст, предназначенный только для рефлексии Модули Работа с атрибутами Основы атрибутов ATpn6yTAttributeUsage Определение собственного атрибута Извлечение атрибутов во время выполнения Извлечение атрибутов в контексте, предназначенном только для рефлексии Динамическая генерация кода Генерация IL с помощью DynamicMethod Стек оценки Передача аргументов динамическому методу ^нерация локальных переменных Ветвление Создание объектов и вызов методов экземпляра Обработка исключений Выпуск сборок и типов Сохранение сгенерированных сборок Объектная модель Reflection. Emit Выпуск членов типа Выпуск методов Выпуск полей и свойств Выпуск конструкторов Присоединение атрибутов Выпуск обобщенных методов и типов Определение обобщенных методов Определение обобщенных типов Сложности, связанные с генерацией Несозданные закрытые обобщения Циклические зависимости Синтаксический разбор IL Написание дизассемблера Глава 20. Динамическое программирование Исполняющая среда динамического языка Унификация числовых типов Динамическое разрешение перегруженных членов Упрощение шаблона Посетитель Анонимный вызов членов обобщенного типа Реализация динамических объектов DynamicObject ExpandoObject Взаимодействие с динамическими языками Передача состояния между C# и сценарием Глава 21. Безопасность Разрешения CodeAccessPermission и PrincipalPermission PermissionSet Сравнение декларативной и императивной безопасности Безопасность доступа к коду (CAS) Как применяется CAS Проверка полного доверия Разрешение вызывающих компонентов с частичным доверием Повышение привилегий АРТСАи [SecurityTransparent] Модель прозрачности Как работает модель прозрачности Как создавать библиотеки APTCA с применением прозрачности Прозрачность в сценариях с полным доверием Помещение в песочницу другой сборки Утверждение разрешений Подсистема безопасности операционной системы Выполнение под учетной записью стандартного пользователя Повышение полномочий до административных и виртуализация Безопасность на основе удостоверений и ролей Назначение пользователей и ролей Обзор криптографии Защита данных Windows Хеширование Симметричное шифрование Шифрование в памяти Соединение в цепочку потоков шифрования Освобождение объектов шифрования Управление ключами Шифрование с открытым ключом и подписание Класс RSA Цифровые подписи Глава 22. Расширенная многопоточность Обзор синхронизации Монопольное блокирование Оператор Iock Monitor. EnternMonitor. Exit Выбор объекта синхронизации Когда необходима блокировка Блокирование и атомарность Вложенное блокирование Взаимоблокировки Производительность Mutex Блокирование и безопасность к потокам Безопасность к потокам и типы. NET Framework Безопасность к потокам в серверах приложений Неизменяемые объекты Немонопольное блокирование Семафор Блокировки объектов чтения/записи Сигнализирование с помощью дескрипторов ожидания событий AutoResetEvent ManualResetEvent CountdownEvent Создание межпроцессного объекта EventWaitHandle Дескрипторы ожидания и продолжение Преобразование дескрипторов ожидания в задачи WaitAny, WaitAll и SignalAndWait Класс Barrier Ленивая инициализация Lazy<T> LazyInitializer Локальное хранилище потока [ThreadStatic] ThreadLocal<T> GetDatanSetData Interrupt и Abort SuspendnResume Таймеры Многопоточные таймеры Однопоточные таймеры Глава 23. Параллельное программирование Для чего нужна инфраструктура PFX Концепции PFX Компоненты PFX Когда необходимо использовать инфраструктуру PFX PLINQ Продвижение параллельного выполнения PLINQ и упорядочивание Ограничения PLINQ Пример: параллельная программа проверки орфографии Функциональная чистота Установка степени параллелизма Отмена Оптимизация PLINQ Класс Parallel Parallel.Invoke Parallel.For и Parallel.ForEach Параллелизм задач Создание и запуск задач Ожидание на множестве задач Отмена задач Продолжение Планировщики задач TaskFactory Работа с AggregateException Flatten и Handle Параллельные коллекции IProducerConsumerCollection<T> ConcurrentBag<T> BlockingCollection<T> Реализация очереди производителей/потребителей Глава 24. Домены приложений Архитектура доменов приложений Создание и уничтожение доменов приложений Использование нескольких доменов приложений Использование DoCallBack Мониторинг доменов приложений Домены и потоки Разделение данных между доменами Разделение данных через ячейки Использование Remoting внутри процесса Изолирование типов и сборок Глава 25. Собственная способность к взаимодействию и COM Обращение к собственным DLL-библиотекам Маршализация типов Маршализация общих типов Маршализация классов и структур Маршализация параметров in и out Обратные вызовы из неуправляемого кода Эмуляция объединения C Разделяемая память Отображение структуры на неуправляемую память fixed и fixed {…} Взаимодействие с COM Назначение COM Основы системы типов COM Обращение к компоненту COM из C# Необязательные параметры и именованные аргументы Неявные параметры ref Индексаторы Динамическое связывание Внедрение типов взаимодействия Эквивалентность типов Основные сборки взаимодействия Открытие объектов C# для COM Глава 26. Регулярные выражения Основы регулярных выражений Скомпилированные регулярные выражения RegexOptions Отмена символов Наборы символов Квантификаторы Жадные и ленивые квантификаторы Утверждения нулевой ширины Просмотр вперед и просмотр назад Привязки Границы слов Группы Именованные группы Замена и разделение текста Делегат MatchEvaluator Разделение текста Рецептурный справочник по регулярным выражениям Рецепты Справочник по языку регулярных выражений Предметный указатель