什么是更有效的方法返回IList<T>或IEnumerable<T>?
IEnumerable<T>它是不可变的集合但IList<T>可变,并包含许多有用的方法和属性.
要投IList<T>给IEnumerable<T>它仅仅是参考副本:
IList<T> l = new List<T>();
IEnumerable<T> e = l;
Run Code Online (Sandbox Code Playgroud)
要转换IEnumerable<T>为List<T>我们需要迭代每个元素或调用ToList()方法:
IEnumerable<T>.ToList();
Run Code Online (Sandbox Code Playgroud)
或者可以传递IEnumerable<T>给List<T>构造函数,该构造函数在其构造函数中的某处执行相同的迭代.
List<T> l = new List<T>(e);
Run Code Online (Sandbox Code Playgroud)
您认为哪种情况更有效?你更喜欢哪种练习?
Dar*_*rov 21
就效率而言,两者都是接口,因此效率将取决于您返回的实际具体类别.根据经验,您应始终返回对象层次结构中最高的类型,该类型适用于此方法的使用者.在你的情况下IEnumerable<T>.如果类的使用者需要添加元素,按索引访问元素,删除元素最好使用IList<T>.
所以一如既往的编程:它取决于 :-)