为什么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方法强制转换列表。