C# · 12月 30, 2021

c# – 为什么IList <>具有比List <>更少的功能?

要使用ConvertAll()这么大的功能,我必须将IList转换为List,这很痛苦.解决方法 请注意,List<>是IList<>的实现具有实际存储,即它在后台保存阵列.通常,IList<可以代替别的东西.在db4o和 linq到sql中,您的IList&可以指向查询,即访问列表将触发数据库操作.

这样,你可以执行myList.Skip(600).Take(20);执行分页,只有在这一步才能执行实际的查询.列表<>包含一百万条记录将是巨大的,而可能有IList有一个巨大的计数,但不要吃大量的内存 – 只要你不访问元素.

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