c# - IList<T> 与 IEnumerable<T>。 IList<T> 或 IEnumerable<T> 哪个更有效

标签 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);

您认为哪种情况效率更高?您在实践中更喜欢哪个?

最佳答案

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

所以在编程中一如既往:视情况而定 :-)

关于c# - IList<T> 与 IEnumerable<T>。 IList<T> 或 IEnumerable<T> 哪个更有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3536589/

相关文章:

c# - 从 NewExpression 成员获取链中的属性名称

java - httpurl连接线程安全

.net - 如何从线程任务返回数据

c# - 在回发之前运行 Javascript 函数

.net - Umbraco 和持续交付/部署

c# - 如何将这几天转换为位掩码?

c# - 为什么 lambda 可以转换为表达式而方法组不能?

C#转义字符

c# - 为什么 .NET 中的已检查算法有时比未检查的算法快?

c# - 如何使用 C# 或 SQL 生成 SQL 数据库脚本?