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