История изменений
Исправление den73, (текущая версия) :
Может, я что-то упускаю, но мне кажется, что инвариантность вообще нет смысла обсуждать - это просто «отсутствие ковариантности и контравариантности» - она доступна по умолчанию сразу, как только возникают параметрические типы. Верно?
Насчёт сигнатуры преобразователя функцией, если бы можно было записать, то он должен быть таким:
void ПреобразоватьКаждыйЭлементФункцией<Ts,Td>(
IList<Ts U Td> list,
Func<Ts in,Td out> mappingFunc
);
Соответственно вопрос, что можно сказать о вариантности Ts и Td - в самом ПреобразоватьКаждыйЭлементФункции ?
Исходная версия den73, :
Может, я что-то упускаю, но мне кажется, что инвариантность вообще нет смысла обсуждать - это просто «отсутствие ковариантности и контравариантности» - она доступна по умолчанию сразу, как только возникают параметрические типы. Верно?
Насчёт сигнатуры преобразователя функцией, если бы можно было записать, то он должен быть таким:
void ПреобразоватьКаждыйЭлементФункцией<Ts,Td>(IList<Ts U Td> list, Func<Ts in,Td out> mappingFunc);
Соответственно вопрос, что можно сказать о вариантности Ts и Td - в самом ПреобразоватьКаждыйЭлементФункции ?