对于List
对象,我们有一个名为Reverse()的方法。
它颠倒了“就地”列表的顺序,它不返回任何东西。
对于该对象,我们有一个名为Reverse()IEnumerable
的扩展方法。
它返回另一个 IEnumerable。
我需要以相反的顺序遍历一个列表,所以我不能直接使用第二种方法,因为我得到一个列表,我不想反转它,只是向后迭代。
所以我可以这样做:
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()?
我对这个选择的历史原因非常感兴趣,而不是“如何做”的东西!