使方法返回 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/