本文介绍了无效的差异:类型参数“ 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&lt; T&gt; .GetList()”上始终有效。 'T'是协变的的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-15 17:34