IEnumerable <T> .Reverse和List <T> .Reverse之间的区别

普拉萨纳

为什么要IEnumerable<T>.Reverse()返回与原始集合List<T>相反的集合,并反转原始集合本身?由于List<T>继承自,这在我看来有些困惑IEnumerable<T>

克拉兹

从概念上讲,这可能是因为IEnumerable当您要表示不可变的项目集合时使用。也就是说,您只想读取列表中的项目,而不想要添加/插入/删除或以其他方式更改集合。在这种数据视图下IEnumerable,以不同的顺序返回新值是预期的结果。当您使用时List,您希望能够添加/插入/删除或以其他方式对集合Reverse进行更改,因此在这种情况下,应该使用一种更改原始列表顺序的方法。

正如其他人所指出的,它IEnumerable是一个接口,List是一个类。List实施IEnumerable

所以,

 IEnumerable<String> names = new List<String>();
 var reversedNames = names.Reverse();

让您获得第二张清单,相反。鉴于,

 List<String> names = new List<String>();
 names.Reverse(); 

撤消原始列表。我希望这是有道理的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章