对于
它会就地反转列表的顺序,不会返回任何内容。
对于
它返回另一个 IEnumerable。
我需要按相反的顺序遍历一个列表,所以我不能直接使用第二种方法,因为我得到的是一个 List,而我不想反转它,只想反向迭代。
所以我可以这样做:
我发现如果我有一个IEnumerable,它比较难读懂,只需使用以下代码即可:
我不明白为什么这两种方法会用相同的名称实现。这很烦人也很令人困惑。
为什么没有一个名为BackwardsIterator()的扩展,可以适用于所有IEnumerable,而不是使用Reverse()?
我对这个选择的历史原因非常感兴趣,而不仅仅是“如何做到这一点”的内容!
List
对象,我们有一个名为 Reverse() 的方法。它会就地反转列表的顺序,不会返回任何内容。
对于
IEnumerable
对象,我们有一个扩展方法称为 Reverse()。它返回另一个 IEnumerable。
我需要按相反的顺序遍历一个列表,所以我不能直接使用第二种方法,因为我得到的是一个 List,而我不想反转它,只想反向迭代。
所以我可以这样做:
for(int i = list.Count - 1; i >=0; i--)
或者
foreach(var item in list.AsEnumerable().Reverse())
我发现如果我有一个IEnumerable,它比较难读懂,只需使用以下代码即可:
foreach(var item in list.Reverse())
我不明白为什么这两种方法会用相同的名称实现。这很烦人也很令人困惑。
为什么没有一个名为BackwardsIterator()的扩展,可以适用于所有IEnumerable,而不是使用Reverse()?
我对这个选择的历史原因非常感兴趣,而不仅仅是“如何做到这一点”的内容!
List.Reverse
。 “转换为您喜欢的类型”意味着进行强制转换,这并不比使用AsEnumerable()
更美观。 - Jim Balter