首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Container<ImplementerOfIInterface>不是Container<IInterface>。为什么不行?

Container<ImplementerOfIInterface>不是Container<IInterface>。为什么不行?
EN

Stack Overflow用户
提问于 2010-06-12 14:05:56
回答 2查看 64关注 0票数 1

为什么DoesntWork()不能在下面工作呢?错误是:Cannot implicitly convert type 'List' to 'IEnumerable'. An explicit conversion exists (are you missing a cast?)。我知道这与我没有得到的泛型/模板有关,但是List是IEnumerable,实现者是IInterface。我不明白为什么这需要抛出(或者如果它真的可以)。

代码语言:javascript
复制
public interface IInterface
{
    // ...
}

public class Implementer : IInterface
{
    // ...
}

IEnumerable<IInterface> DoesntWork()
{
    List<Implementer> result = new List<Implementer>();
    return result;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-06-12 14:11:32

这与协方差有关。这里有一个不错的博客帖子。如果不使用4.0,则必须使用System.Linq 投射方法转换列表。

票数 4
EN

Stack Overflow用户

发布于 2010-06-12 14:39:07

这适用于NET4.0:公共接口IEnumerable<out T>:IEnumerable out是相反的

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3028928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档