Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен
Ключевое слово unsafe
Работа с операциями * и &
Небезопасная (и безопасная) функция обмена
Доступ к полям через указатели (операция ->)
Ключевое слово stackalloc
Закрепление типа посредством ключевого слова fixed
Ключевое слово sizeof
Резюме
Глава 12
Понятие типа делегата
Определение типа делегата в C#
Базовые классы System.MulticastDelegate и System.Delegate
Пример простейшего делегата
Исследование объекта делегата
Отправка уведомлений о состоянии объекта с использованием делегатов
Включение группового вызова
Удаление целей из списка вызовов делегата
Синтаксис групповых преобразований методов
Понятие обобщенных делегатов
Обобщенные делегаты Action<> и Func<>
Понятие событий C#
Ключевое слово event
"За кулисами" событий
Прослушивание входящих событий
Упрощение регистрации событий с использованием Visual Studio
Создание специальных аргументов событий
Обобщенный делегат EventHandler<T>
Понятие анонимных методов C#
Доступ к локальным переменным
Использование ключевого слова static с анонимными методами (нововведение в версии 9.0)
Использование отбрасывания с анонимными методами (нововведение в версии 9.0)
Понятие лямбда-выражений
Анализ лямбда-выражения
Обработка аргументов внутри множества операторов
Лямбда-выражения с несколькими параметрами и без параметров
Использование ключевого слова static с лямбда-выражениями (нововведение в версии 9.0)
Использование отбрасывания с лямбда-выражениями (нововведение в версии 9.0)
Модернизация примера CarEvents с использованием лямбда-выражений
Лямбда-выражения и члены, сжатые до выражений (обновление в версии 7.0)
Резюме
Глава 13
Программные конструкции, специфичные для LINQ
Неявная типизация локальных переменных
Синтаксис инициализации объектов и коллекций
Лямбда-выражения
Расширяющие методы
Анонимные типы
Роль LINQ
Выражения LINQ строго типизированы
Основные сборки LINQ
Применение запросов LINQ к элементарным массивам
Решение с использованием расширяющих методов
Решение без использования LINQ
Выполнение рефлексии результирующего набора LINQ
LINQ и неявно типизированные локальные переменные
LINQ и расширяющие методы
Роль отложенного выполнения
Роль немедленного выполнения
Возвращение результатов запроса LINQ
Возвращение результатов LINQ посредством немедленного выполнения
Применение запросов LINQ к объектам коллекций
Доступ к содержащимся в контейнере подобъектам
Применение запросов LINQ к необобщенным коллекциям
Фильтрация данных с использованием метода OfТуре<Т>()
Исследование операций запросов LINQ
Базовый синтаксис выборки
Получение подмножества данных
Проецирование в новые типы данных
Проецирование в другие типы данных
Подсчет количества с использованием класса Enumerable
Изменение порядка следования элементов в результирующих наборах на противоположный
Выражения сортировки
LINQ как лучшее средство построения диаграмм Венна
Устранение дубликатов
Операции агрегирования LINQ
Внутреннее представление операторов запросов LINQ
Построение выражений запросов с применением операций запросов
Построение выражений запросов с использованием типа Enumerable и лямбда-выражений
Построение выражений запросов с использованием типа Enumerable и анонимных методов
Построение выражений запросов с использованием типа Enumerable и низкоуровневых делегатов
Резюме
Глава 14
Роль процесса Windows
Роль потоков
Взаимодействие с процессами используя платформу .NET Core
Перечисление выполняющихся процессов
Исследование конкретного процесса
Исследование набора потоков процесса
Исследование набора модулей процесса
Запуск и останов процессов программным образом
Управление запуском процесса с использованием класса ProcessStartInfo
Использование команд операционной системы с классом ProcessStartInfo
Домены приложений .NET
Класс System.AppDomain
Взаимодействие со стандартным доменом приложения
Перечисление загруженных сборок
Изоляция сборок с помощью контекстов загрузки приложений
Итоговые сведения о процессах, доменах приложений и контекстах загрузки
Резюме
Глава 15
Отношения между процессом, доменом приложения, контекстом и потоком
Сложность, связанная с параллелизмом
Роль синхронизации потоков
Пространство имен System.Threading
Класс System.Threading.Thread
Получение статистических данных о текущем потоке выполнения
Свойство Name
Свойство Priority
Ручное создание вторичных потоков
Работа с делегатом ThreadStart
Работа с делегатом ParametrizedThreadStart
Класс AutoResetEvent
Потоки переднего плана и фоновые потоки
Проблема параллелизма
Синхронизация с использованием ключевого слова lock языка C#
Синхронизация с использованием типа System.Threading.Monitor
Синхронизация с использованием типа System.Threading.Interlocked
Программирование с использованием обратных вызовов Timer
Использование автономного отбрасывания (нововведение в версии 7.0)
Класс ThreadPool
Параллельное программирование с использованием TPL
Пространство имен System.Threading.Tasks
Роль класса Parallel
Обеспечение параллелизма данных с помощью класса Parallel
Доступ к элементам пользовательского интерфейса во вторичных потоках
Класс Task
Обработка запроса на отмену
Обеспечение параллелизма задач с помощью класса Parallel
Запросы Parallel LINQ (PLINQ)
Создание запроса PLINQ
Отмена запроса PLINQ
Асинхронные вызовы с помощью async/await
Знакомство с ключевыми словами async и await языка C# (обновление в версиях 7.1, 9.0)
Класс SynchronizationContext и async/await
Роль метода ConfigureAwait()
Соглашения об именовании асинхронных методов
Асинхронные методы, возвращающие void
Асинхронные методы, возвращающие void и поддерживающие await
Асинхронные методы, возвращающие void и работающие в стиле "запустил и забыл"
Асинхронные методы с множеством контекстов await
Вызов асинхронных методов из неасинхронных методов
Ожидание с помощью await в блоках catch и finally
Обобщенные возвращаемые типы в асинхронных методах (нововведение в версии 7.0)
Локальные функции (нововведение в версии 7.0)
Отмена операций async/await
Асинхронные потоки (нововведение в версии 8.0)
Итоговые сведения о ключевых словах async и await
Откройте для себя мир чтения на siteknig.com - месте, где каждая книга оживает прямо в браузере. Здесь вас уже ждёт произведение Язык программирования C#9 и платформа .NET5 - Эндрю Троелсен, относящееся к жанру Программирование. Никаких регистраций, никаких преград - только вы и история, доступная в полном формате. Наш литературный портал создан для тех, кто любит комфорт: хотите читать с телефона - пожалуйста; предпочитаете ноутбук - идеально! Все книги открываются моментально и представлены полностью, без сокращений и скрытых страниц. Каталог жанров поможет вам быстро найти что-то по настроению: увлекательный роман, динамичное фэнтези, глубокую классику или лёгкое чтение перед сном. Мы ежедневно расширяем библиотеку, добавляя новые произведения, чтобы вам всегда было что открыть "на потом". Сегодня на siteknig.com доступно более 200000 книг - и каждая готова стать вашей новой любимой. Просто выбирайте, открывайте и наслаждайтесь чтением там, где вам удобно.


