Язык программирования C#9 и платформа .NET5
Шрифт:
Массивы интерфейсных типов
Автоматическая реализация интерфейсов
Явная реализация интерфейсов
Проектирование иерархий интерфейсов
Иерархии интерфейсов со стандартными реализациями (нововведение в версии 8.0)
Множественное наследование с помощью интерфейсных типов
Построение итераторных методов с использованием ключевого слова yield
Защитные конструкции с использованием локальных функций (нововведение в версии 7.0)
Построение именованного итератора
Интерфейс ICloneable
Более сложный пример клонирования
Интерфейс IComparable
Указание множества порядков сортировки с помощью IComparer
Специальные свойства и специальные типы сортировки
Резюме
Глава 9
Классы, объекты и ссылки
Базовые сведения о времени жизни объектов
Код CIL для ключевого слова new
Установка объектных ссылок в null
Выяснение, нужен ли объект
Понятие поколений объектов
Эфемерные поколения и сегменты
Типы сборки мусора
Фоновая сборка мусора
Тип System.GC
Принудительный запуск сборщика мусора
Построение финализируемых объектов
Переопределение метода System.Object.Finalize
Подробности процесса финализации
Построение освобождаемых объектов
Повторное использование ключевого слова using в C#
Объявления using (нововведение в версии 8.0)
Создание финализируемых и освобождаемых типов
Формализованный шаблон освобождения
Ленивое создание
Настройка процесса создания данных Lazy<>
Резюме
Часть IV
Глава 10
Побудительные причины создания классов коллекций
Пространство имен System.Collections
Иллюстративный пример: работа с ArrayList
Обзор пространства имен 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)