Язык программирования С# 9 и платформа.NET 5. 10 изд. Том 1

Язык программирования С# 9 и платформа.NET 5. 10 изд. Том 1

Язык программирования С# 9 и платформа.NET 5. 10 изд. Том 1
Автор: Джепикс Филипп, Троелсен Эндрю
Переводчик: Ю. Н. Артеменко
Дата выхода: 2022
Издательство: "Диалектика"
Количество страниц: 772
Размер файла: 23,7 МБ
Тип файла: PDF
Добавил: codelibs
 Проверить на вирусы

Об авторах
О технических рецензентах
Благодарности
Введение
Авторы и читатели— одна команда
Краткий обзор книги
Часть I. Язык программирования C# и платформа .NET5
Часть II. Основы программирования на C#
Часть III. Объектно-ориентированное программирование на C#
Часть IV.Дополнительные конструкции программирования на C#
ЧастьV. Программирование с использованием сборок .NET Core
Часть VI. Работа с файлами, сериализация объектов и доступ к данным
Часть VII. Entity Framework Core
Часть VIII. Разработка клиентских приложений для Windows
Часть IX. ASP.NETCore
Ждем ваших отзывов!
Часть I. Язык программирования C# и платформа .NET 5 37
Глава 1. Введение в C# и .NET (Core) 5
Некоторые основные преимущества инфраструктуры .NETCore
Понятиежизненного цикла поддержки .NETCore
Предварительный обзор строительных блоков .NETCore (.NET Runtime, CTS и CLS)
Роль библиотек базовых классов
Роль .NET Standard
Что привносит язык C#
Основные средства в предшествующих выпусках
Новые средства в C# 9
Сравнение управляемого и неуправляемого кода
Использование дополнительных языков программирования, ориентированных на .NET Core
Обзор сборок .NET
Роль языка CIL
Преимущества языка CIL
Роль метаданных типов .NETCore
Роль манифеста сборки
Понятие общей системы типов
Типы классов CTS
Типы интерфейсовCTS
Типы структур CTS
Типы перечислений CTS
Типы делегатов CTS
Члены типов CTS
Встроенные типы данных CTS
Понятие общеязыковой спецификации
Обеспечение совместимости с CLS
Понятие .NET Core Runtime
Различиямежду сборкой, пространством имен и типом
Доступ к пространству имен программным образом
Ссылка на внешние сборки
Исследование сборки с помощью ildasm.ехе
Резюме
Глава 2. Создание приложений на языке C#
Установка .NET 5
Понятие схемы нумерации версий .NET5
Подтверждение успешности установки .NET 5
Использование более ранних версий .NET (Core) SDK
Построение приложений .NET Core с помощьюVisual Studio
Установка Visual Studio 2019 (Windows)
Испытание Visual Studio 2019
Построение приложений .NET Core с помощью Visual Studio Code
Испытание Visual Studio Code
Документация no .NET Core и C#
Резюме
Часть II. Основы программирования на C#
Глава 3. Главные конструкции программирования на С#: часть 1
Структура простой программы C#
Использование вариацийметода Main ( ) (обновление в версии 7.1)
Использование операторов верхнего уровня (нововведение в версии 9.0)
Указание кода ошибки приложения (обновление в версии 9.0)
Обработка ар1ументов командной строки
Указание аргументов командной строки в Visual Studio
Интересное отступление от темы: некоторые дополнительные
члены класса System.Environment
Использование класса System.Console
Выполнение базового ввода и вывода с помощью класса Console
Форматирование консольного вывода
Форматирование числовых данных
Форматирование числовых данных за рамками
консольных приложений
Работа с системными типами данных и соответствующими ключевыми словами C#
Объявление и инициализация переменных
Использование внутренних типов данных и операции new (обновление в версии 9.0)
Иерархия классов для типов данных
Члены числовых типов данных
Члены System.Boolean
Члены System.Char
Разбор значений из строковых данных
Использование метода TryParse()
для разбора значений из строковых данных
Использование типов System.DateTime и System.TimeSpan
Работа с пространствомимен System.Numerics
Использование разделителей групп цифр (нововведение в версии 7.0)
Использование двоичных литералов (нововведение в версии 7.0/7.2)
Работа со строковыми данными
Выполнение базовыхманипуляций со строками
Выполнение конкатенации строк
Использование управляющих последовательностей
Выполнение интерполяции строк
Определение дословных строк (обновление в версии 8.0)
Работа со строками и операциями равенства
Строки неизменяемы
Использование типа System.Text.StringBuilder
Сужающие и расширяющие преобразования типов данных
Использование ключевого слова checked
Настройка проверки переполнения на уровне проекта
Настройка проверки переполнения на уровне проекта (Visual Studio)
Использование ключевого слова unchecked
Неявно типизированные локальные переменные
Неявное объявление чисел
Ограничения неявно типизированных переменных
Неявно типизированные данные строго типизированы
Полезность неявно типизированных локальных переменных
Работа с итерационными конструкциями C#
Использование цикла for
Использование цикла foreach
Использование неявной типизации в конструкциях foreach
Использование циклов while и do/while
Краткое обсуждение области видимости
Работа с конструкциями принятия решений и операциями отношения/равенства
Использование оператора if/else
Использование операций отношения и равенства
Использование операторов if/else и сопоставления с образцом (нововведение в версии 7.0)
Внесение улучшений в сопоставление с образцом (нововведение в версии 9.0)
Использование условной операции (обновление в версиях 7.2, 9.0)
Использование логических операций
Использование оператора switch
Выполнение сопоставления с образцом в операторах switch (нововведение в версии 7.0, обновление в версии 9.0)
Использование выражений switch (нововведение в версии8.0)
Резюме
Глава 4. Главные конструкции программирования на С#: часть 2
Понятие массивов C#
Синтаксис инициализации массивов C#
Понятие неявно типизированных локальных массивов
Определение массива объектов
Работа с многомерными массивами
Использование массивов в качестве аргументов и возвращаемых значений
Использование базового класса System.Array
Использование индексов и диапазонов (нововведение в версии 8.0)
Понятие методов
Члены , сжатые до выражений
Локальныефункции (нововведение в версии 7.0, обновление в версии 9.0)
Статические локальныефункции (нововведение в версии 8.0)
Понятие параметров методов
Модификаторы параметров для методов
Стандартное поведение передачи параметров
Использование модификатора out (обновление в версии 7.0)
Использование модификатора ref
Использование модификатора in (нововведение в версии 7.2)
Использование модификатора params
Определение необязательных параметров
Использование именованных параметров (обновление в версии 7.2)
Понятие перегрузки методов
Понятие типа enum
Управление хранилищем, лежащим в основе перечисления
Объявление переменных типа перечисления
Использование типа System. Enum
Динамическое обнаружение пар “имя-значение” перечисления
Использование перечислений, флагов и побитовых операций
Понятие структуры (как типа значения)
Создание переменных типа структур
Использование структур, допускающих только чтение (нововведение в версии 7.2)
Использование членов, допускающих только чтение (нововведение в версии 8.0)
Использование структур ref (нововведение в версии 7.2)
Использование освобождаемых структур ref (нововведение в версии 8.0)
Типы значений и ссылочные типы
Использование типов значений, ссылочных типов и операции присваивания
Использование типов значений, содержащих ссылочные типы
Передача ссылочных типов по значению
Передача ссылочных типов по ссылке
Заключительные детали относительно типов значений и ссылочных типов
Понятие типов С#, допускающих null
Использование типов значений, допускающих null
Использование ссылочных типов, допускающих null (нововведение в версии 8.0)
Работа с типами, допускающими значение null
Понятие кортежей (нововведение и обновление в версии 7.0)
Начало работы с кортежами
Использование выведенных имен переменных (обновление в версии C# 7.1)
Понятие эквивалентности/неэквивалентности кортежей (нововведение в версии 7.3)
Использование кортежей как возвращаемых значений методов
Использование отбрасывания с кортежами
Использование выражений switch с сопоставлением с образцом для кортежей (нововведение в версии 8.0)
Деконструирование кортежей
Резюме
Часть III. Объектно-ориентированное программирование на C#
Глава 5. Инкапсуляция
Знакомство с типом класса C#
Размещение объектов с помощью ключевого слова new
Понятие конструкторов
Роль стандартного конструктора
Определение специальных конструкторов
Еще раз о стандартном конструкторе
Роль ключевого слова this
Построение цепочки вызовов конструкторов с использованием this
Исследование потока управления конструкторов
Еще раз о необязательных аргументах
Понятие ключевого слова static
Определение статических полей данных
Определение статических методов
Определение статических конструкторов
Определение статических классов
Импортирование статических членов с применением ключевого слова using языка C#
Основные принципы объектно-ориентированного программирования
Роль инкапсуляции
Роль наследования
Роль полиморфизма
Модификаторы доступа C# (обновление в версии 7.2)
Использование стандартных модификаторов доступа
Использование модификаторов доступа и вложенных типов
Первый принцип объектно-ориентированного программирования: службы инкапсуляции C#
Инкапсуляция с использованием традиционных методов доступа и изменения
Инкапсуляция с использованием свойств
Использование свойств внутри определения класса
Свойства, допускающие только чтение
Свойства, допускающие только запись
Смешивание закрытыхи открытых методов get/set в свойствах
Еще раз о ключевом слове static: определение статических свойств
Сопоставление с образцом и шаблоны свойств (нововведение в версии 8.0)
Понятие автоматических свойств
Взаимодействие с автоматическими свойствами
Автоматические свойства и стандартные значения
Инициализация автоматических свойств
Понятие инициализации объектов
Обзор синтаксиса инициализации объектов
Использование средства доступа только для инициализации (нововведение в версии 9.0)
Вызов специальных конструкторов с помощью синтаксиса инициализации
Инициализация данных с помощью синтаксиса инициализации
Работа с константными полями данных и полями данных, допускающими только чтение
Понятие константных полей данных
Понятие полей данных, допускающих только чтение
Понятие статических полей, допускающих только чтение
Понятие частичных классов
Использование записей (нововведение в версии 9.0)
Эквивалентность с типами записей
Копирование типов записей с использованием выражений with
Резюме
Глава 6. Наследование и полиморфизм
Базовый механизм наследования
Указание родительского класса для существующего класса
Замечание относительно множества базовых классов
Использование ключевого слова sealed
Еще раз о диаграммах классов VisualStudio
Второй принцип объектно-ориентированного программирования: детали наследования
Вызов конструкторов базового класса с помощью ключевого слова base
Хранение секретов семейства: ключевое слово protected
Добавление запечатанного класса
Наследование с типами записей (нововведение в версии 9.0)
Реализация модели включения/делегации
Определения вложенных типов
Третий принцип объектно-ориентированного программирования: поддержка полиморфизма в C#
Использование ключевых слов virtual и override
Переопределение виртуальных членов с помощью
VisualStudio/VisualStudio Code
Запечатывание виртуальных членов
Абстрактные классы
Полиморфные интерфейсы
Сокрытие членов
Правила приведения для базовых и производных классов
Использование ключевого слова as
Использование ключевого слова is(обновление в версиях 7.0, 9.0)
Еще раз о сопоставлении с образцом (нововведение в версии 7.0)
Главный родительский класс: System.Object
Переопределение метода System.Object.ToString()
Переопределение метода System.Object.Equals()
Переопределение метода System.Object.GetHashCode()
Тестирование модифицированного класса Person
Использование статических членов класса System.Object
Резюме
Глава 7. Структурированная обработка исключений
Ода ошибкам, дефектами исключениям
Роль обработки исключений .NET
Строительные блоки обработки исключений в .NET
Базовый класс System.Exception
Простейший пример
Генерация общего исключения
Перехват исключений
Выражение throw (нововведение в версии 7.0)
Конфигурирование состояния исключения
Свойство TargetSite
Свойство StackTrace
Свойство HelpLink
Свойство Data
Исключения уровня системы (System.SystemException)
Исключения уровня приложения (System.ApplicationException)
Построение специальных исключений, способ первый
Построение специальных исключений, способ второй
Построение специальных исключений, способ третий
Обработка множества исключений
Общие операторы catch
Повторная генерация исключений
Внутренние исключения
Блок finally
Фильтры исключений
Отладка необработанныхисключений с использованием Visual Studio
Резюме
Глава 8. Работа с интерфейсами
Понятие интерфейсных типов
Сравнение интерфейсных типов и абстрактных базовых классов
Определение специальных интерфейсов
Реализация интерфейса
Обращение к членам интерфейса на уровне объектов
Получение ссылок на интерфейсы : ключевое слово as
Получение ссылок на интерфейсы :
ключевое слово is(обновление в версии 7.0)
Стандартные реализации (нововведение в версии 8.0)
Статические конструкторы и члены (нововведение в версии 8.0)
Использование интерфейсов в качестве параметров
Использование интерфейсов в качестве возвращаемых значений
Массивы интерфейсных типов
Автоматическая реализация интерфейсов
Явная реализация интерфейсов
Проектирование иерархий интерфейсов
Иерархии интерфейсов со стандартными реализациями (нововведение в версии 8.0)
Множественное наследование с помощью интерфейсных типов
Интерфейсы IEnumerable и IEnumerator
Построение итераторных методов с использованием
ключевого слова yield
Построение именованного итератора
Интерфейс ICloneable
Более сложный пример клонирования
Интерфейс IComparable
Указание множества порядков сортировки с помощью IComparer
Специальные свойства и специальные типы сортировки
Резюме
Глава 9. Время существования объектов
Классы , объекты и ссылки
Базовые сведения о времени жизни объектов
Код CIL для ключевого слова new
Установка объектных ссылок в null
Выяснение, нужен ли объект
Понятие поколений объектов
Эфемерные поколения и сегменты
Типы сборки мусора
Фоновая сборка мусора
Тип System.GC
Принудительный запуск сборщика мусора
Построениефинализируемых объектов
Переопределение метода System.Object.Finalize ( )
Подробности процесса финализации
Построение освобождаемых объектов
Повторное использование ключевого слова using в C#
Объявления using (нововведение в версии 8.0)
Создание финализируемых и освобождаемых типов
Формализованный шаблон освобождения
Ленивое создание объектов
Настройка процесса создания данныхLazyo
Резюме
Часть IV. Дополнительные конструкции программирования на C#
Глава 10. Коллекции и обобщения
Побудительные причины создания классов коллекций
Пространство имен System.Collections
Обзор пространства имен
System.Collections.Specialized
Проблемы, присущие необобщенным коллекциям
Проблема производительности
Проблема безопасности в отношении типов
Первый взглядна обобщенные коллекции
Роль параметров обобщенных типов
Указание параметров типа для обобщенных классов и структур
Указание параметров типа для обобщенных членов
Указание параметров типов для обобщенных интерфейсов
Пространство имен
System.Collections.Generic
Синтаксис инициализации коллекций
Работа с классом List<T>
Работа с классом Stack<T>
Работа с классом Queue<T>
Работа с классом SortedSet<T>
Работа с классом Dictionary<TKey,TValue>
Пространство имен
System.Collections.ObjectModel
Работа с классом ObservableCollection<T>
Создание специальных обобщенныхметодов
Выведение параметров типа
Создание специальных обобщенных структур и классов
Выражения default вида значений в обобщениях
Выражения default литерального вида (нововведение в версии 7.1)
Сопоставление с образцом в обобщениях (нововведение в версии 7.1)
Ограничение параметров типа
Примеры использования ключевого слова where
Отсутствие ограничений операций
Резюме
Глава 11. Расширенные средства языка C#
Понятие индексаторныхметодов
Индексация данных с использованием строковых значений
Перегрузка индексаторныхметодов
Многомерные индексаторы
Определения индексаторов в интерфейсных типах
Понятие перегрузки операций
Перегрузка бинарных операций
А как насчет операций += и -=?
Перегрузка унарных операций
Перегрузка операций эквивалентности
Перегрузка операций сравнения
Финальные соображения относительно перегрузки операций
Понятие специальных преобразований типов
Повторение: числовые преобразования
Повторение: преобразования между связанными типами классов
Создание специальных процедур преобразования
Дополнительные явные преобразования для типа Square
Определение процедур неявного преобразования
Понятие расширяющих методов
Определение расширяющих методов
Вызов расширяющих методов
Импортирование расширяющих методов
Расширение типов, реализующих специфичные интерфейсы
Поддержка расширяющего метода GetEnumerator ( ) (нововведение в версии 9.0)
Понятие анонимных типов
Определение анонимного типа
Внутреннее представление анонимных типов
Реализация методов ToString ( ) и GetHashCode ( )
Семантика эквивалентности анонимных типов
Анонимные типы , содержащие другие анонимные типы
Работа с типами указателей
Ключевое слово unsafe
Работа с операциями * и &
Небезопасная (и безопасная) функция обмена
Доступ к полям через указатели (операция ->)
Ключевое слово stасkailос
Закрепление типа посредством ключевого слова fixed
Ключевое слово sizeof
Резюме
Глава 12. Делегаты, события и лямбда-выражения
Понятие типа делегата
Определение типа делегата в C#
Базовые классы System.MulticastDelegate и System.Delegate
Пример простейшего делегата
Исследование объекта делегата
Отправка уведомлений о состоянии объекта с использованием делегатов
Включение группового вызова
Удаление целей из списка вызовов делегата
Синтаксис групповых преобразований методов
Понятие обобщенных делегатов
Обобщенные делегаты ActionO и Funco
Понятие событий C#
Ключевое слово event
“За кулисами” событий
Прослушивание входящих событий
Упрощение регистрации событий с использованиемVisual Studio
Создание специальных аргументов событий
Обобщенный делегат EventHandler<T>
Понятие анонимных методов C#
Доступ к локальным переменным
Использование ключевого слова static с анонимными методами (нововведение в версии 9.0)
Использование отбрасывания с анонимными методами (нововведение в версии 9.0)
Понятие лямбда-выражений
Анализ лямбда-выражения
Обработка аргументов внутримножества операторов
Лямбда-выражения с несколькими параметрами и без параметров
Использование ключевого слова static с лямбда-выражениями (нововведение в версии 9.0)
Использование отбрасывания с лямбда-выражениями (нововведение в версии 9.0)
Модернизация примера CarEvents с использованием лямбда-выражений
Лямбда-выражения и члены, сжатые до выражений (обновление в версии 7.0)
Резюме
Глава 13. LINQ to Objects
Программные конструкции, специфичные для LINQ
Неявная типизация локальных переменных
Синтаксис инициализации объектов и коллекций
Лямбда-выражения
Расширяющие методы
Анонимные типы
Роль LINQ
Выражения LINQ строго типизированы
Основные сборки LINQ
Применение запросов LINQ к элементарным массивам
Решение с использованием расширяющихметодов
Решение без использования LINQ
Выполнение рефлексии результирующего набора LINQ
LINQ и неявно типизированные локальные переменные
LINQ и расширяющие методы
Роль отложенного выполнения
Роль немедленного выполнения
Возвращение результатов запроса LINQ
Возвращение результатов LINQ посредством немедленного выполнения
Применение запросов LINQ к объектам коллекций
Доступ к содержащимся в контейнере подобъектам
Применение запросов LINQ к необобщенным коллекциям
Фильтрация данных с использованием метода0fType<T>()
Исследование операций запросов LINQ
Базовый синтаксис выборки
Получение подмножества данных
Проецирование в новые типы данных
Проецирование в другие типы данных
Подсчет количества с использованием класса Enumerable
Изменение порядка следования элементов в результирующих наборах на противоположный
Выражения сортировки
LINQ как лучшее средство построения диаграмм Венна
Устранение дубликатов
Операции агрегирования LINQ
Внутреннее представление операторов запросов LINQ
Построение выражений запросов с применением операций запросов
Построение выражений запросов с использованием типа Enumerable и лямбда-выражений
Построение выражений запросов с использованием типа Enumerable и анонимных методов
Построение выражений запросов с использованием типа Enumerable и низкоуровневых делегатов
Резюме
Глава 14. Процессы, домены приложений и контексты загрузки
Роль процессаWindows
Роль потоков
Взаимодействие с процессами, используя платформу .NET Core
Перечисление выполняющихся процессов
Исследование конкретного процесса
Исследование набора потоков процесса
Исследование набора модулей процесса
Запуск и останов процессов программным образом
Управление запуском процесса с использованием класса ProcessStartlnfo
Использование команд операционной системы с классом ProcessStartlnfo
Домены приложений .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
Роль метода Conf igureAwait ( )
Соглашения об именовании асинхронных методов
Асинхронные методы , возвращающие void
Асинхронные методы с множеством контекстов await
Вызов асинхронных методов из неасинхронных методов
Ожидание с помощью await в блоках catch и finally
Обобщенные возвращаемые типы в асинхронных методах (нововведение в версии 7.0)
Локальныефункции (нововведение в версии 7.0)
Отмена операций async/await
Асинхронные потоки (нововведение в версии 8.0)
Итоговые сведения о ключевых словах async и await
Резюме
Часть V. Программирование с использованием сборок .NET Core
Глава 16. Построение и конфигурирование библиотек классов
Определение специальных пространств имен
Разрешение конфликтов имен с помощью полностью заданных имен
Разрешение конфликтов имен с помощью псевдонимов
Создание вложенных пространств имен
Изменение стандартного пространства имен в Visual Studio
Роль сборок .NET Core
Сборки содействуютмногократному использованию кода
Сборки устанавливают границы типов
Сборки являются единицами, поддерживающими версии
Сборки являются самоописательными
Формат сборки .NET Core
Установка инструментов профилирования C++
Заголовок файла операционной системы (Windows)
Заголовок файла CLR
Код CIL, метаданные типов и манифест сборки
Дополнительные ресурсы сборки
Отличиямежду библиотеками классов и консольными приложениями
Отличиямежду библиотеками классов .NETStandard и .NET Core
Конфигурирование приложений
Построение и потребление библиотеки классов .NET Core
Исследование манифеста
Исследование кода CIL
Исследование метаданных типов
Построение клиентского приложения C#
Построение клиентского приложения Visual Basic
Межъязыковое наследование в действии
Открытие доступа к внутренним типам для других сборок
NuGet и .NET Core
Пакетирование сборок с помощью NuGet
Ссылка на пакеты NuGet
Опубликование консольных приложений (обновление в версии .NET 5)
Опубликование приложений, зависящих от инфраструктуры
Опубликование автономных приложений
Определение местонахождения сборок исполняющей средой .NET Core
Резюме
Глава 17. Рефлексия типов, позднее связывание и программирование на основе атрибутов
Потребность в метаданных типов
Просмотр (частичных) метаданных для перечисления EngineStateEnum
Просмотр (частичных) метаданных для типа Саг
Исследование блока TypeRef
Документирование определяемой сборки
Документирование ссылаемых сборок
Документирование строковых литералов
Понятие рефлексии
Класс System.Туре
Получение информации о типе с помощью System.Object.GetType()
Получение информации о типе с помощью typeof()
Получение информации о типе с помощью System.Туре.GetType()
Построение специального средства для просмотра метаданных
Рефлексияметодов
Рефлексия полей и свойств
Рефлексия реализованных интерфейсов
Отображение разнообразных дополнительных деталей
Добавление операторов верхнего уровня
Рефлексия статических типов
Рефлексия обобщенных типов
Рефлексия параметров и возвращаемых значений методов
Динамическая загрузка сборок
Рефлексия сборок инфраструктуры
Понятие позднего связывания
Класс System.Activator
Вызов методов без параметров
Вызовметодов с параметрами
Роль атрибутов .NET
Потребители атрибутов
Применение атрибутов в C#
Сокращенная система обозначения атрибутов C#
Указание параметров конструктора для атрибутов
Атрибут [Obsolete] в действии
Построение специальных атрибутов
Применение специальных атрибутов
Синтаксис именованных свойств
Ограничение использования атрибутов
Атрибуты уровня сборки
Использование файла проекта для атрибутов сборки
Рефлексия атрибутов с использованием раннего связывания
Рефлексия атрибутов с использованием позднего связывания
Практическое использование рефлексии, позднего связывания и специальных атрибутов
Построение расширяемого приложения
Построение мультипроектного решения ExtendableApp
Построение сборки CommonSnappableTypes.dll
Построение оснастки на C#
Построение оснастки на Visual Basic
Добавление кода для ExtendableApp
Резюме
Глава 18. Динамические типы и среда DLR
Роль ключевого слова dynamic языкаC#
Вызов членов на динамически объявленных данных
Область использования ключевого слова dynamic
Ограничения ключевого слова dynamic
Практическое использование ключевого слова dynamic
Роль исполняющей среды динамического языка
Роль деревьев выражений
Динамический поиск в деревьях выражений во время выполнения
Упрощение вызовов с поздним связыванием посредством динамических типов
Использование ключевого слова dynamic для передачи аргументов
Упрощение взаимодействия с СОМ посредством динамических данных (толькоWindows)
Роль основных сборок взаимодействия
Встраивание метаданных взаимодействия
Общие сложности взаимодействия с СОМ
Взаимодействие с СОМ с использованием динамических данных C#
Резюме
Глава 19. Язык CIL и роль динамических сборок
Причины для изучения грамматики языка CIL
Директивы, атрибуты и коды операций CIL
Роль директив CIL
Роль атрибутов CIL
Роль кодов операций CIL
Разница между кодами операций и ихмнемоническими эквивалентами в CIL
Заталкивание и выталкивание: основанная на стеке природа CIL
Возвратное проектирование
Роль меток в коде CIL
Взаимодействие с CIL: модификацияфайла * .il
Компиляция кода CIL
Директивы и атрибуты CIL
Указание ссылок на внешние сборки в CIL
Определение текущей сборки в CIL
Определение пространств имен в CIL
Определение типов классов в CIL
Определение и реализация интерфейсов в CIL
Определение структур в CIL
Определение перечислений в CIL
Определение обобщений в CIL
Компиляцияфайла CILTypes.il
Соответствиямежду типами данных в библиотеке базовых классов .NET Core, C# и CIL
Определение членов типов в CIL
Определение полей данных в CIL
Определение конструкторов типа в CIL
Определение свойств в CIL
Определение параметров членов
Исследование кодов операций CIL
Директива .maxstack
Объявление локальных переменных в CIL
Отображение параметров на локальные переменные в CIL
Скрытая ссылка this
Представление итерационных конструкций в CIL
Заключительные слова о языке CIL
Динамическиесборки
Исследование пространства имен System.Reflection.Emit
Рольтипа System.Reflection.Emit.ILGenerator
Выпускдинамической сборки
Выпусксборки и набора модулей
Рольтипа ModuleBuilder
Выпусктипа Не11оСlass и строковой переменной-члена
Выпуск конструкторов
Выпуск метода SayHello()
Использованиединамически сгенерированной сборки
Резюме
Предметный указатель

Эта классическая книга представляет собой всеобъемлющий источник сведений о языке программирования C# и о связанной с ним инфраструктуре. В 10-м издании книги вы найдете описание новейших возможностей языка C# 9 и .NET 5 вместе с подробным “закулисным” обсуждением, призванным расширить навыки критического мышления разработчиков, когда речь идет об их ремесле. Книга охватывает ASP. NET Core, Entity Framework Core и многое другое наряду с последними обновлениями унифицированной платформы . NET, начиная с улучшений показателей производительности настольных приложений Windows в . NET 5 и обновления инструментария XAML и заканчивая расширенным рассмотрением файлов данных и способов обработки данных. Все примеры кода были переписаны с учетом возможностей последнего выпуска C# 9.


Похожее:

Список отзывов:

Нет отзывов к книге.