为什么要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] 删除。
我来说两句