Как при использовании необобщённого интерфейса происходит упаковка значимого типа?
Всем привет! Извиняюсь за, может быть, глупый вопрос, но... В книге Рихтера написано:
... для CLR также исключительно важна поддержка обобщенных интерфейсов. Без них любая попытка работы со значимым типом через необобщенный интерфейс всякий раз будет приводить к необходимости упаковки и потере безопасности типов в процессе компиляции, что сильно сузило бы область применения обобщенных типов.
Объясните, пожалуйста, кто-нибудь на примере как без применения обобщённого интерфейса происходит упаковка значимых типов. Что-то я не понимаю.
Ответы (1 шт):
Автор решения: Николай
→ Ссылка
Разобрался. Код ниже:
void TestInterfaces(){
int p = 34; int c = 35;
IComparable cmp1 = p;
cmp1.CompareTo(c); // <--- Необобщённые интерфейс. Упаковка т.к. ожидается object, а ему скармливается int
IComparable<int> cmp2 = p;
cmp2.CompareTo(с); // <--- Обобщённые интерфейс. Нет упаковки т.к. ожидается int
}
TestInterfaces();