Ковариантный универсальный параметр c #

Я пытаюсь понять это, но не получил подходящих результатов поиска.

В C # 4 я могу сделать

    public interface IFoo<out T>
    {

    }

Как это отличается от

    public interface IFoo<T>
    {

    }

Все, что я знаю, это то, что out делает общий параметр ковариантным (??). Может ли кто-нибудь объяснить использование части на примере? А также, почему это применимо только для интерфейсов и делегатов, а не для классов?

Извините, если это дубликат, и закройте его как таковой, если он есть.

32
задан 28 June 2011 в 14:59
поделиться