Страницы

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

среда, 27 февраля 2019 г.

Для чего используют out в обобщенных интерфейсах

Столкнулся с объявлением обобщенного интерфейса с использованием out
public interface IContainer { ... }
Никак не могу понять для чего используют out, по механизму это похоже на использование ref и out в методах или это из другой области?


Ответ

in и out в интерфейсах — это ковариантность и контравариантность
Благодаря out, IEnumerable является IEnumerable, а благодаря in, а IComparer является IComparer
Есть хорошая статья на MSDN с примерами из фреймворка: Covariance and Contravariance in Generics

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

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