为什么IList <>的功能少于List <>?

Ben*_*nny 10 .net c# generics list

要使用如此强大的功能ConvertAll(),我必须转换IListList,这很痛苦.

mne*_*syn 18

请注意,这List<>IList<>实际存储的实现,即它在后台保存数组.通常,a IList<>可以是其他东西的代理.在db4o和linq to sql中,您IList<>可以"指向查询",即访问列表将触发数据库操作.

这样,您可以执行myList.Skip(600).Take(20);分页,只有在此步骤中才能执行实际查询.一个List<>包含万个条目将是巨大的,而有可能是IList<>S作一个巨大的Count,但不要吃的内存显著量-只要你不访问的元素.

ConvertAll将需要实例化每个对象,因此这是一项昂贵的操作.因此,最好使操作显式化并强制您检索接口的特定实现.显然,转换需要实例化所有对象,因此懒惰地做这件事没有任何好处.


aba*_*hev 12

为什么不用IEnumerable<T>.Select而不是List<T>.ConvertAll?自从IList继承IEnumerable.在SO上看到这个问题.