При этом дублирования кода не происходит и на уровне JIT-компиляторов, которые, однажды сгенерировав код для конкретного типа, сохраняют ссылку на этот участок кода и передают ее, когда такой код понадобится вторично. Это справедливо как для ссылочных, так и значимых типов. Естественно, что универсальность потребовала введения в библиотеку FCL соответствующих классов, интерфейсов, делегатов и методов классов, обладающих этим свойством. Так, например, в класс System.Array добавлен ряд универсальных статических методов. Вот один из них: public static int BinarySearch<T>(T[] array, T value); В таблице 22.1 показаны некоторые универсальные классы и интерфейсы библиотеки FCL 2.0 из пространства имен System.Collections.Generic и их аналоги из пространства System.Collections. Таблица 22.1. Соответствие между универсальными классами и их обычными двойниками | Универсальный класс | Обычный класс | Универсальный интерфейс | Обычный интерфейс | Comparer<T> | Comparer | ICollection<T> | ICollection | Dictionary<K,T> | HashTable | IComparable<T> |
Предыдущая страница |
Следующая страница |
|