Страницы

Поиск по вопросам

пятница, 2 ноября 2018 г.

Ковариантность и контрвариантность в делегатах Action и Func [дубликат]

На данный вопрос уже ответили: В чем суть ковариантности и контравариантности делегатов? 2 ответа Почему параметры T1, T2,... являются контрвариантными (in T1, in T2,...) в Action? И почему возвращаемый тип в Func является ковариантным (out TResult)?


Ответ

На пальцах: если вам требуется парикмахер для собак (Action), подойдёт универсальный парикмахер для животных (функция, принимающая на вход Animal).
Поэтому переменной типа Action можно присвоить выражение типа Action

Наоборот, если вам нужно раздобыть какое угодно животное (Func), то магазин по продаже котяток подойдёт (Func).
Поэтому переменной типа Func можно присвоить выражение типа Func

Более подробно: В чем суть ковариантности и контравариантности делегатов?, Контравариантность обобщенных делегатов С#

Комментариев нет:

Отправить комментарий