如果协变量类型显示为输出,则包含类型为协变量。生产Ts的生产者就像生产Ts。
interface IReturnCovariant<out T> { IEnumerable<T> GetTs(); }
如果逆变类型显示为输出,则包含类型为逆变。产生Ts的消费者就像消费Ts。
interface IReturnContravariant<in T> { IComparer<T> GetTComparer(); }
如果协变类型作为输入出现,则包含类型是协变的。消费Ts的生产者就像消费Ts。
interface IAcceptCovariant<in T> { void ProcessTs(IEnumerable<T> ts); }
如果逆变类型显示为输入,则包含类型为协变。消费Ts的消费者就像生产Ts一样。
interface IAcceptContravariant<out T> { void CompareTs(IComparer<T> tComparer); }