【发布时间】:2016-10-24 20:14:15
【问题描述】:
在关于协变和逆变的this msdn documentation 中解释了out 关键字用于声明泛型参数协变。
您可以使用 out 关键字声明泛型类型参数协变。
然后给出out关键字的用法示例,然后,在此声明中,将委托称为“逆变”的方法参数,我认为应该称为“协变” " 因为它仍然标有out :
这条规则有一个例外。如果您将 逆变 泛型委托作为方法参数,则可以将该类型用作委托的泛型类型参数。
那么这个例子如下:
interface ICovariant<out R>
{
void DoSomething(Action<R> callback);
}
不应该是称为协变的委托参数而是逆变的吗?
【问题讨论】:
-
Action<T>是逆变的;不是协变的。
标签: c# delegates covariance msdn contravariance