为什么List <>实现了IList

ole*_*sii 9 .net c# ilist generic-list

可能重复:
为什么(它真的吗?)列表实现所有这些接口,而不仅仅是IList?

出于好奇,通用List <>实现非通用接口IList的原因是什么?

示例代码

IList<int> list = new List<int>();
list.Add(1);

//compiles but ArgumentException thrown at run time
((IList)list).Add(new object()); 
Run Code Online (Sandbox Code Playgroud)

Dyp*_*ppl 15

看看Eric Lippert撰写的这篇博客文章:这么多界面.他一如既往地有一些很好的见解

确保阅读整个内容,但这里是回答问题的引用:

为什么List实现IList?

这有点奇怪,因为除了object之外的任何类型的List都不符合IList的完整契约.这可能会让更新旧C#1.0代码的人更容易使用泛型; 那些人可能已经确保只有正确的类型进入他们的名单.大多数情况下,当你传递一个IList时,被调用者可以通过索引访问列表,而不是它可以添加任意类型的新项目.