为什么DoesntWork()在下面不起作用?错误是:
Cannot implicitly convert type 'List' to 'IEnumerable'. An explicit conversion exists (are you missing a cast?)。我知道这是关于通用/模板的事情,但是List是IEnumerable的,而Implementer是IInterface的。我不知道为什么需要强制转换(或者是否真的可以强制转换)。

public interface IInterface
{
    // ...
}

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

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

最佳答案

它与covariance有关。这是一个不错的博客post。如果未使用4.0,则必须使用System.Linq Cast方法强制转换列表。

09-05 12:42