本文介绍了无效的差异:类型参数“ T”必须在“ xxx.IItem< T> .GetList()”上始终有效。 'T'是协变的的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
以下代码为什么会出错?
Why the following code get the error?
public interface IFoo {}
public interface IBar<T> where T : IFoo {}
public interface IItem<out T> where T: IFoo
{
IEnumerable<IBar<T>> GetList();
}
推荐答案
接口 IBar
和 IItem
不一致:在您的 IBar
声明中, T不是协变的,因为没有 out
关键字,而在 IITem
中,T是协变的。
The interfaces IBar
and IItem
do not agree on variance: in your IBar
declaration, the T is not covariant, as there is no out
keyword, whereas in IITem
the T is covariant.
这篇关于无效的差异:类型参数“ T”必须在“ xxx.IItem< T> .GetList()”上始终有效。 'T'是协变的的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!