为什么我可以将List <t>分配给IEnumerable <t>,而不是ICollection <t>或IList <t>

时间:2016-08-04 00:13:29

标签: c# .net

我有两种类型,IFooFoo定义为

public interface IFoo
{
    void run()
}

public class Foo : IFoo
{
    public void run() {
        // ...
    }
}

我可以将List<Foo>分配给IEnumerable<IFoo>,但不能分配ICollection<IFoo>IList<IFoo>

IEnumerable<IFoo> fooEnumerable = new List<Foo>();// works fine
ICollection<IFoo> fooCollection = new List<Foo>();// doesn't work
IList<IFoo>       fooList       = new List<Foo>();// doesn't work

为什么?什么允许IEnumerable不关心它包含哪种类型,而ICollectionIList关注什么?

0 个答案:

没有答案