C# Language Types de variantes en tant que paramètres et valeurs de retour


Exemple

Si un type de covariant apparaît en sortie, le type contenant est covariant. Produire un producteur de T est comme produire des T

interface IReturnCovariant<out T>
{
    IEnumerable<T> GetTs();
}

Si un type contravariant apparaît en tant que sortie, le type contenant est contravariant. Produire un consommateur de T s, c'est comme consommer des T s.

interface IReturnContravariant<in T>
{
    IComparer<T> GetTComparer();
}

Si un type de covariant apparaît en entrée, le type contenant est contravariant. Consommer un producteur de T est comme consommer des T

interface IAcceptCovariant<in T>
{
    void ProcessTs(IEnumerable<T> ts);
}

Si un type contravariant apparaît en entrée, le type contenant est covariant. Consommer un consommateur de T est comme produire des T

interface IAcceptContravariant<out T>
{
    void CompareTs(IComparer<T> tComparer);
}