更新がだいぶ前になっているページについてで恐縮ですが、「使わなくなった機能・新しい機能」の「余談: IEnumerable を使いましょう」の節についての意見となります。 (https://ufcpp.net/study/csharp/ap_modern.html?p=2#ienumerable) おそらくこれを記載した当時は標準でより適切なインターフェースが無かったための記載かと思いますが、現在では他の選択もありますし、特にプロパティについてIEnumerable<T>を選択するのが適切では無い場合も多いかと思います。 そのため「IEnumerable<T> インターフェイスを使うようにしましょう」という記載が誤解を招きそうかと思っております。 細かな点ですし、現在の視点からみると内容が限定的のように思われ、上記ページの立ち位置が少々わからないところもありますが、お時間ある際にご確認いただければと思います。
Activity
kanjywm commentedon May 16, 2021
大筋は、現状の記述でよいと思います。 データ列に対して、前から順に1要素ずつ読む操作だけしかしない場合は、少なくないと思います。 それに、取り敢えず IEnumerable<T> が返されれば LINQ などで煮るなり焼くなり好きなように加工できます。
しかし、配列のように整数インデクサーでランダム読み出ししたい場合も、あるにはありますね。 整数インデクサーの需要が高いデータ列を IEnumerable<T> として返してしまえば、わざわざ ToArray() や ToList() で加工する必要が生じます。 さらに、極端な仮定かもしれませんが、もし List<T> で作り上げたデータ列を IEnumerable<T> として返し、返された側がすぐ ToArray() や ToList() にかければ、明らかに無駄です。
2012年8月頃 (たぶん C# 5.0 と同時期) に .NET Framework 4.5 で IReadOnlyList<T> 等が追加されましたよね。 ちょっと追記いただければ、読者 (特に初心者) に親切かもしれません。