オブジェクトには、 Reverse()List
というメソッドがあります。
リストの順序を「インプレース」と逆にし、何も返しません。
オブジェクトには、 Reverse()IEnumerable
という拡張メソッドがあります。
別のIEnumerableを返します。
リスト全体を逆の順序で繰り返す必要があるため、2番目の方法を直接使用することはできません。これは、リストを取得し、それを逆にしたくないので、逆に繰り返すだけです。
だから私はこれを行うことができます:
for(int i = list.Count - 1; i >=0; i--)
または
foreach(var item in list.AsEnumerable().Reverse())
IEnumerableを使用している場合よりも読みにくいことがわかりました。
foreach(var item in list.Reverse())
この2つのメソッドが同じ名前でこのように実装されている理由がわかりません。それはかなり迷惑で混乱を招きます。
すべてのIEnumerableで機能するReverse()の代わりにBackwardsIterator()という拡張機能がないのはなぜですか?
私はこの選択の歴史的な理由に非常に興味があります。