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条评论
登录后参与评论

相关文章

来自分类Dev

List <T>与IEnumerable <T>

来自分类Dev

List <T>与IEnumerable <T>

来自分类Dev

“this IEnumerable<T> items”和“this T items”有什么区别?

来自分类Dev

数组类和 IEnumerable<T>

来自分类Dev

为什么IList <T>实现IEnumerable <T>和ICollection <T>而ICollection <T>本身实现IEnumerable <T>

来自分类Dev

ImmutableArray <T>和ImmutableList <T>之间的区别

来自分类Dev

MemoryPool <T>和ArrayPool <T>之间的区别

来自分类Dev

IEnumerable <T>与IReadOnlyList <T>

来自分类Dev

reverse和lazy_reverse之间的区别?

来自分类Dev

用ienumerable <T>实现ienumerable

来自分类Dev

IEnumerable <T>,并行ForEach和内存管理

来自分类Dev

无法从IEnumerable <T>转换为IEnumerable <T>

来自分类Dev

LINQ IEnumerable <T []>到IEnumerable <T>

来自分类Dev

仅在3.5中从List <T>到IEnumerable <T>的InvalidCastException

来自分类Dev

方法签名传递参数为IEnumerable <T>或List <T>

来自分类Dev

以静态方法将List <T>分配给IEnumerable <T>

来自分类Dev

C#,单个T和IEnumerable <T>的重载

来自分类Dev

char *和wchar_t *之间的区别

来自分类Dev

toArray(T [] a)和toArray()之间的区别

来自分类Dev

ls -c和ls -t之间的区别

来自分类Dev

从 IEnumerable<IEnumerable<T>> 中删除重复的 IEnumerable<T>

来自分类Dev

正确使用IEnumerable <T>

来自分类Dev

如何实现IEnumerable <T>?

来自分类Dev

连接多个IEnumerable <T>

来自分类Dev

IEnumerable为T []的数组

来自分类Dev

IEnumerable <T>与数组

来自分类Dev

分区IEnumerable <T>结果

来自分类Dev

IEnumerable <T>合并

来自分类Dev

使用通用IEnumerable <T>