IList <t> vs IEnumerable <t>。什么是更有效的IList <t>或IEnumerable <t> </t> </t> </t> </t>

时间:2010-08-21 06:20:41

标签: c# .net c#-4.0

使方法返回IList<T>IEnumerable<T>的更有效方法是什么?

IEnumerable<T>它是不可变的集合,但IList<T>是可变的,包含许多有用的方法和属性。

要将IList<T>投射到IEnumerable<T>,它只是参考副本:

IList<T> l = new List<T>();
IEnumerable<T> e = l;

要将IEnumerable<T>转换为List<T>,我们需要迭代每个元素或调用ToList()方法:

IEnumerable<T>.ToList(); 

或者可以将IEnumerable<T>传递给List<T>构造函数,该构造函数在其构造函数中的某处执行相同的迭代。

List<T> l = new List<T>(e);

您认为哪种情况更有效?您在练习中更喜欢哪一种?

1 个答案:

答案 0 :(得分:21)

就效率而言,两者都是接口,因此效率取决于您返回的实际具体类别。根据经验,您应始终返回对象层次结构中最高的类型,该类型适用于此方法的使用者。在您的情况下IEnumerable<T>。如果类的使用者需要添加元素,按索引访问元素,删除元素,最好使用IList<T>

一如既往地编程:取决于: - )