Понятие анонимных типов
Определение анонимного типа
Внутреннее представление анонимных типов
Реализация методов ToString() и GetHashCode()
Семантика эквивалентности анонимных типов
Анонимные типы, содержащие другие анонимные типы
Работа с типами указателей
Ключевое слово 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 и расширяющие методы