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