List<string>和IEnumerable<String>有什么区别?

34

2
https://dev59.com/YnRA5IYBdhLWcg3w9y10 - timothyclifford
5个回答

77

List<string>IEnumerable<string> 的一个具体实现。区别在于 IEnumerable<string> 仅仅是一个字符串序列,而 List<string> 可以通过 int 索引进行索引、添加和删除,并且可以在特定的索引处插入项目。

基本上,IEnumerable<string> 接口允许您按顺序流式传输字符串,但 List<string> 不仅如此,还允许您以特定方式修改和访问列表中的项。 IEnumerable<string> 是一般的字符串序列,可以迭代但不允许随机访问。 List<string> 是一个具体的可变大小的随机访问集合。


5
这个答案比在https://dev59.com/YnRA5IYBdhLWcg3w9y10的那些更有帮助。 - JYelton
具体实现是什么意思?它是否意味着列表继承自IEnumerable? - user1534664
1
@user1534664:不是。它意味着它继承自IEnumerable 并且 它不是抽象的,实际上它是可构造的。 - jason

12

不同。

IEnumerable使您能够使用for-each循环遍历集合。

IEnumerable只有GetEnumerator方法。

List它实现了许多接口,如IEnumerable,IList等。因此,List中有许多功能。

在性能方面,IEnumerable比List更快。


4

IEnumerable<T>是一个接口,必须被实现。

List<T>IEnumerable<T>的一种实现方式。


2

2

第一个是字符串的具体列表List,另一个是实现了IEnumerable<string>接口的任何类。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接