Создание финализируемых и освобождаемых типов
Формализованный шаблон освобождения
Ленивое создание объектов
Настройка процесса создания данных 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 вида значений в обобщениях
(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})
Выражения default литерального вида (нововведение в версии 7.1)
Сопоставление с образцом в обобщениях (нововведение в версии 7.1)
Ограничение параметров типа
Примеры использования ключевого слова where
Отсутствие ограничений операций
Резюме
Глава 11
Понятие индексаторных методов
Индексация данных с использованием строковых значений
Перегрузка индексаторных методов
Многомерные индексаторы
Определения индексаторов в интерфейсных типах
Понятие перегрузки операций
Перегрузка бинарных операций
А как насчет операций += и -=?
Перегрузка унарных операций
Перегрузка операций эквивалентности
Перегрузка операций сравнения
Финальные соображения относительно перегрузки операций
Понятие специальных преобразований типов
Повторение: числовые преобразования
Повторение: преобразования между связанными типами классов
Создание специальных процедур преобразования
Дополнительные явные преобразования для типа Square
Определение процедур неявного преобразования
Понятие расширяющих методов
Определение расширяющих методов
Вызов расширяющих методов
Импортирование расширяющих методов
Расширение типов, реализующих специфичные интерфейсы
Поддержка расширяющего метода GetEnumerator() (нововведение в версии 9.0)